[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#445203: debian-policy: 10.8. Log files: /etc/logrotate.d/<package> preferred



Steve Langasek <vorlon@debian.org> writes:

> I think "invoke-rc.d" is wrong per se for this.  Where the behavior of
> 'invoke-rc.d foo reload' differs from that of '/etc/init.d/reload', it's
> *incorrect* in the context of log rotation: the post-rotation reopening
> of logfiles should complete regardless of the runlevel policy for the
> service.

> Cf. my follow-up to bug #588085.

I propose the following patch for this bug instead in order to get it
clear of this discussion.  We can always go back and sort out whether it
should use invoke-rc.d after we work through the other bug.

Does this look okay?

diff --git a/policy.sgml b/policy.sgml
index 7736ddb..a7bf76e 100644
--- a/policy.sgml
+++ b/policy.sgml
@@ -7903,11 +7903,13 @@ ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
 	</p>
 
 	<p>
-	  Log files must be rotated occasionally so that they don't
-	  grow indefinitely; the best way to do this is to drop a log
-	  rotation configuration file into the directory
-	  <file>/etc/logrotate.d</file> and use the facilities provided by
-	  logrotate.<footnote>
+	  Log files must be rotated occasionally so that they don't grow
+	  indefinitely.  The best way to do this is to install a log
+	  rotation configuration file in the
+	  directory <file>/etc/logrotate.d</file>, normally
+	  named <file>/etc/logrotate.d/<var>package</var></file>, and use
+	  the facilities provided by <prgn>logrotate</prgn>.
+	  <footnote>
 	    <p>
 	      The traditional approach to log files has been to set up
 	      <em>ad hoc</em> log rotation schemes using simple shell
@@ -7932,17 +7934,20 @@ ln -fs ../sbin/sendmail debian/tmp/usr/bin/runq
 	    section="8">):
 	  <example compact="compact">
 /var/log/foo/*.log {
-rotate 12
-weekly
-compress
-postrotate
-/etc/init.d/foo force-reload
-endscript
+    rotate 12
+    weekly
+    compress
+    missingok
+    postrotate
+        [ -f /var/run/foo.pid ] && kill -s HUP `cat /var/run/foo.pid`
+    endscript
 }
 	  </example>
 	  This rotates all files under <file>/var/log/foo</file>, saves 12
-	  compressed generations, and forces the daemon to reload its
-	  configuration information after the log rotation.
+	  compressed generations, and tells the daemon to reopen its log
+	  files after the log rotation.  It skips this log rotation
+	  (via <tt>missingok</tt>) if no such log file is present, which
+	  avoids errors if the package is removed but not purged.
 	</p>
 
 	<p>

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>



Reply to: