On Tue, 9 Jul 2002, Charles Steinkuehler wrote:

> > This app spews data on STDOUT while running.  I want to run this app
> as
> > a daemon (continuously running in background) and I want to save the
> > stdout data to a logfile.  In fact, I am doing this now and everything
> > is OK:
> >
> > $DAEMON >>$LOG 2>&1 &
> >
> > Except, when _savelog_ rotates the logfile, the application writes to
> > the first archive, rather than the file with original logfile label:
> >
> > -rw-r----- 1 root adm     0 Jul 9 05:07 logfile
> > -rw-r----- 1 root adm 17943 Jul 9 14:17 logfile.0
> >
> > After savelog rotates the logfile, $DAEMON is writing to logfile.0,
> > instead of logfile.  Obviously, this is not acceptable ;<
> >
> > I assume that this has something to do with the original redirected
> > output keeping logfile open, even during the rename to logfile.0
> 
> Correct...the file-handle used to log the daemon's output doesn't "go
> bad" just because another process renamed the file.
> 
> > is there a workaround?
> 
> Yes...you have to get your process to close the log-file and re-open it
> (so it starts writing to logfile, rather than logfile.0).  Since it
> sounds like you're doing the logging at the shell level, you'll probably
> just want to effectively do a "restart"...this can be handled using the
> savelog scripts by providing a command to execute after rotating the
> logs (ie: svi mydaemon restart).

or just split the output and write it line-by-line... if you don't mind
the timestamping offered by syslogd, you can use something like

 # $DAEMON 2>&1 | streamlog

---streamlog---
#!/bin/sh
# streamlog - splits a stream and logs each line of stdin with logger

IFS=''
while read lin; do
 logger -p local1.user "$lin"
done
---------------

This is untested, so YMMV. :)

If you don't like logger, you can echo the line to the logfile yourself
with ">>".  The effect will be the same... the file will be opened and
closed for each line added.

---------------------------------------------------------------------------
Jeff Newmiller                        The     .....       .....  Go Live...
DCN:<[EMAIL PROTECTED]>        Basics: ##.#.       ##.#.  Live Go...
                                      Live:   OO#.. Dead: OO#..  Playing
Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#.  rocks...2k
---------------------------------------------------------------------------



-------------------------------------------------------
This sf.net email is sponsored by:ThinkGeek
Stuff, things, and much much more.
http://thinkgeek.com/sf
------------------------------------------------------------------------
leaf-user mailing list: [EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/leaf-user
SR FAQ: http://leaf-project.org/pub/doc/docmanager/docid_1891.html

Reply via email to