Logrotate

Matthew Seaman m.seaman at infracaninophile.co.uk
Sun Jan 23 15:00:33 UTC 2011


On 23/01/2011 14:10, Grant Peel wrote:
> Is there a way or method to ignore the symlinks (or a workaround) that
> anyone knows of, other than making a logrotate.conf container for each
> individal directory.

Use something other than logrotate?

Three possibilities:

   * rotatelogs

      This is a utility that comes with Apache.  To use it, you need to
      modify your apache config to change the logging directives.
      Instead of (eg.)

          CustomLog "/var/log/httpd-access.log" common

      You'ld use:

          CustomLog "|/usr/local/sbin/rotatelogs \
                 /var/log/httpd-access.log 86400" common

      which will generate a new log file every day at midnight,
      labelled by the date as the standard seconds-since-the-epoch
      unit time.  (Other time formats can be applied)

   * cronolog -- in ports as sysutils/cronolog

      This is rotatelogs on steroids -- it lets you use strftime(3)
      format codes to build the path and/or filename the logfile is
      saved as, so you could have a scheme giving paths like:

          /var/logs/apache22/2011/01/23/virtual-host-name/access_log

   [One advantage of rotatelogs or cronolog for busy sites -- you
   get log file rotation without any requirement to restart apache
   at all.  One disadvantage: neither of these programs *delete*
   over-aged log files.  You'll need to write a very small cron job to
   do that bit.]

   * newsyslog -- part of the base system.

     You can use wildcards to match a range of different file names.
     If you rotate the logs based on age or size, it /should/ only do
     one cycle per invocation.  (Not tested -- so may be completely
     bogus).  Something like:


     /home/*/logs/access_log  644 14 * 24 GJ /var/run/httpd.pid 30

     added to /etc/newsyslog.conf should get you log files rotated once
     every 24h with two weeks worth kept on hand.

Otherwise, you could rearrange your directory structure to give you a
unique path distinguishable by globbing.  So, instead of having:

     /home/domain1.com as the real directory

     and sym-linking

     domain1.net -> domain1.com
     domain1.org -> domain1.com

Make the directory be:

     /home/_domain1/

and create symlinks:

     domain1.com -> _domain1
     domain1.net -> _domain1
     domain1.org -> _domain1

Then you can wildcard as '/home/_*/logs/access_log' [Note '_' was chosen
because that character is specifically disallowed in host / domain
names: it's guaranteed not to accidentally collide]

	Cheers,

	Matthew

-- 
Dr Matthew J Seaman MA, D.Phil.                   7 Priory Courtyard
                                                  Flat 3
PGP: http://www.infracaninophile.co.uk/pgpkey     Ramsgate
JID: matthew at infracaninophile.co.uk               Kent, CT11 9PW

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 267 bytes
Desc: OpenPGP digital signature
Url : http://lists.freebsd.org/pipermail/freebsd-questions/attachments/20110123/64c35e26/signature.pgp


More information about the freebsd-questions mailing list