Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Oct 2008 11:17:17 +0100
From:      Frank Shute <frank@shute.org.uk>
To:        Grant Peel <gpeel@thenetnow.com>
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Logrotate
Message-ID:  <20081002101717.GA10650@melon.esperance-linux.co.uk>
In-Reply-To: <668A2B1DDBEC40BCAC6A82589B5D1159@GRANT>
References:  <668A2B1DDBEC40BCAC6A82589B5D1159@GRANT>

next in thread | previous in thread | raw e-mail | index | archive | help
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 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20081002101717.GA10650>