[syslog-ng]Re: Thinking about linking

Jay Goldberg jg@open.ch
Thu, 27 Jun 2002 09:03:56 +0200


Hi Klaas

Thanks very much for the reply and for thinking that this makes sense :)

Symlinks are really portable - the symlink() and unlink() system calls are
part of the Open Group's UNIX 98 definition (formerly X/Open and 'Spec 1170'),
so any UNIX would be able to do this.  Less sure about windows, BTW, although
Cygwin and U/WIN definitely do support the calls.

If I can find the time, I'll have a look at it myself, as I think it's
really just a few lines of logic (plus error checking et al):

	add file options "symlink_cur" and "symlink_pre"

	at file close() time:
		if (symlink_cur is set) {
			unlink(symlink_cur)
		}
		if (symlink_pre is set) {
			symlink(real_file, symlink_pre)
		}

	at file open() time:

		if (symlink_cur is set) {
			 symlink(real_file, symlink_cur)
		}

...that should about cover it.  Never having touched lex & yacc, I've been
hesitant to try to touch this code, but it shouldn't be that bad (famous
last words :))

	Kind regards

		Jay
	

===< Klaas van Gend wrote: >===

 > From: klaas.vangend@philips.com
 > To: syslog-ng@lists.balabit.hu
 > Date: Wed, 26 Jun 2002 09:49:28 +0200
 > Subject: [syslog-ng]Re: Thinking about linking
 > Reply-To: syslog-ng@lists.balabit.hu
 >
 > On 2002-06-26 06:25:05 AM syslog-ng-admin wrote:
 >
 > >
 > > Message: 4
 > > Date: Tue, 25 Jun 2002 17:06:22 +0200
 > > From: Jay Goldberg <jg@open.ch>
 > > To: syslog-ng@lists.balabit.hu
 > > Organization: Open Systems AG - http://www.open.ch
 > > Gecko/20020530
 > > Subject: [syslog-ng]Thinking about linking
 > > Reply-To: syslog-ng@lists.balabit.hu
 > >
 > > Hi, syslog-ng'ers
 > >
 > > A quick question for all - I've been using syslog-ng, but instead of using
 > > the excellent built-in $YEAR $MONTH and $DAY macros for automatic logfile
 > > rotation, I've been using a different solution -
 > >
 > > I use the cronolog program (www.cronolog.org) as a destination for any files
 > > that I want to keep locally.  It's not optimal, but it allows me to do one
 > > thing that keeps our complex management environment intact after the cutover
 > > from syslog to syslog-ng, and that's to maintain a symbolic link to the
 > > latest and previous logfiles in the place where folks/scripts would normally
 > > think to look for them.  So for example:
 > >
 > > /reallybigdisk/logs/2002/06/messages.25      and
 > > /reallybigdisk/logs/2002/06/messages.24
 > >
 > > would be today's and yesterdays 'messages' file.  But with cronolog, I'm abl
e
 > > to specify options so that /var/adm/messages is just a symlink to whatever f
ile
 > > we're logging to now, and /var/adm/messages.0 is a symlink to whatever file
 > > we logged to last:
 > >
 > > host# ls -l /var/adm/messages*
 > > lrwxrwxrwx 1 root root 34 Jun 25 01:16 /var/adm/messages ->
 > > /reallybigdisk/logs/2002/06/messages.25
 > > lrwxrwxrwx 1 root root 34 Jun 24 01:16 /var/adm/messages.0 ->
 > > /reallybigdisk/logs/2002/06/messages.24
 > >
 > > I'm not sure if I missed this in the documentation for syslog-ng or perhaps
 > > I'm just insane for thinking that this is useful :)
 > >
 > > So I guess my questions after all this are:
 > >
 > > - did I miss this in the documentation?
 > > - am I insane for wanting such a feature?
 > > - would it be a lot of trouble to add this feature?
 > >
 > > ...I was thinking something along the lines of a 'maintain_symlink' option f
or
 > > a file destination that takes the target of the symlink (e.g.,
 > > /var/adm/messages)
 > > as an option.
 >
 >
 > As far as I know (and I've probably been the last person looking over that cod
e), there is no such option currently available.
 > It wouldn't be too hard to write, if and only if creating symlinks is portable
  over all UNIX implementations.
 > Being a Linux&Windows programmer only, I don't know for sure.
 > Anyway, following the lines of my latest patch (the "remove_if_older" patch, s
ubmitted Feb1 2002, included in 1.5.15),
 > it shouldn't be too difficult to implement.
 >
 > I currently don't have time for it, but I think your suggestion makes sense an
d maybe I can persuade my boss to
 > give me some time to implement it.
 >
 > Groetjes,
 >
 > Klaas van Gend

--
jay goldberg
senior engineer

open systems ag
raeffelstrasse 29
ch-8045 zurich
t: +41 1 455 74 00
f: +41 1 455 74 01
jg@open.ch

http://www.open.ch