Logrotate
Frank Shute
frank at shute.org.uk
Thu Oct 2 10:17:31 UTC 2008
On Wed, Oct 01, 2008 at 07:52:48PM -0400, Grant Peel wrote:
>
> Hi all,
>
> I have recently started using logrotate to rotate all the logs in the users
> home directories. These are all apache logs files.
>
> /home/domain.com/logsaccess_log
> /home/domain.com/logsaccess_log.0.gz
> /home/domain.com/logsaccess_log.1.gz
> /home/domain.com/logsaccess_log.2.gz
>
> I have a problem though. Some of my domains have softlinks pointing to
> them, this causes the logs to be rotated 2 or more times (i.e. 1 time for
> the 'real' directory, and 1 time each for each softlink pointing to them).
>
> Example
>
> /home/domain.com/logs/
> domain2.com -> domain.com
> domain3.com -> domain.com
>
> will result in the 'access_log' being rotated 3 times in one run, causing
> my log dirs to look like this:
>
> -rw-r--r-- 1 root holt 160 Oct 1 05:44 access_log
> -rw-r--r-- 1 root holt 446 Oct 1 05:44 error_log
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.1.gz
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.2.gz
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.3.gz
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.4.gz
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.5.gz
> -rw-r--r-- 1 root holt 20 Oct 1 03:46 access_log.6.gz
> -rw-r--r-- 1 root holt 224 Oct 1 03:46 access_log.7.gz
> -rw-r--r-- 1 root holt 20 Sep 30 03:46 access_log.8.gz
> -rw-r--r-- 1 root holt 20 Sep 30 03:46 access_log.9.gz
>
> Here is this appropriate part of my logrotate.conf
>
> # logrotate.conf
>
> compress
>
> ...
>
> /home/*/logs/access_log {
> missingok
> rotate 14
> daily
> create 644 root
> sharedscripts
> postrotate
> /usr/local/sbin/apachectl restart
> endscript
> }
>
> # End of logrotate.conf
>
>
> Question, is there a way to stop this from happening?
>
> -Grant
>
Aswell as doing what Jeremy Chadwick mentioned, you might want to use
newsyslog(8) to rotate your logs.
It's got a couple of advantages that I know of: it's part of the base
system and it gracefully sends Apache a signal (SIGUSR1) to stop it
writing to the logfile before it rotates it.
You want something like the following in newsyslog.conf(5):
/var/log/httpd-access.log 644 5 200 * B /var/run/httpd.pid 30
Obviously, adjust the parameters to suit your needs. You want the 30
at the end. All explained in the manpage.
Regards,
--
Frank
Contact info: http://www.shute.org.uk/misc/contact.html
More information about the freebsd-questions
mailing list