persistent process supervision
tinylog(8)              persistent process supervision              tinylog(8)



NAME
       tinylog - log stdin to a directory of rotated log files

SYNOPSIS
       tinylog [-hV] [-k numkeep ] [-r] [-s logsize ] [-t] [-z] dir

DESCRIPTION
       tinylog  reads  lines  from  standard input and writes them to a set of
       rotated log files maintained in dir.

       While active, tinylog switches into dir and  writes  into  a  log  file
       named  current.   When  current  reaches the size specified with the -s
       option (default 100000 bytes), it rotates the file: current is  renamed
       with  a  filename in the form _yyyymmddThhmmss.uuuuuu.s, and a new cur-
       rent is opened.

       tinylog maintains a set of older rotated log files  in  dir,  upto  the
       number  specified with the -k option (default 5).  After this number is
       reached, tinylog deletes the rotated log file with the oldest timestamp
       before continuing with a new current.

       If  the  -z option is specified, tinylog will compress log files during
       rotation with the utility specified in the environmental variable TINY-
       LOG_ZIP (default /usr/bin/gzip).  If the compression is successful, the
       rotated log file is renamed with a .Z extension.

       The name of a rotated log file may be described further: beginning with
       an  underscore,  followed  by  a current gmtime(3) timestamp in RFC8601
       format (to the nearest microsecond), followed by a status  suffix,  and
       optionally  followed by a .Z zip extension.  Normally the status suffix
       is .s, indicating the file was safely written  to  disk.   Otherwise  a
       status  suffix  of .u indicates that the file was not safely written to
       disk, and may possibly be incomplete and/or corrupted by an  unexpected
       failure.

       tinylog sets the file mode of current to 0644 while active.  When tiny-
       log sees eof on stdin, it writes any pending line  to  current,  fsyncs
       and  closes  the  file,  and  changes  its mode to 0744 before exiting.
       Whenever tinylog restarts, it looks for an existing current and, if one
       is found with a file mode 0744, reopens it and changes its mode back to
       0644 for continued logging.  Otherwise, if an existing current is found
       set  with  a  mode of 0644, it is immediately rotated with a .u suffix,
       and a new current is opened.

       tinylog ignores empty lines, truncates lines longer than  1000  charac-
       ters, and converts unprintable control characters to `?'.

OPTIONS
       -h     Help.  Print a brief usage message to stderr and exit.

       -k numkeep
              Keep.   Sets  the  maximum number of log files that tinylog will
              keep after rotation.  Whenever tinylog rotates the  most  recent
              log file, it deletes any more than numkeep older log files found
              in the directory.  The minimum number is 0,  in  which  case  no
              older  log files are kept.  If not specified, the default number
              of older log files kept is 5.

       -r     Rotate on start.  Normally on start-up, tinylog  begins  logging
              with  an existing current file if it has been safely closed from
              a previous session.  The -r option causes tinylog to immediately
              rotate  any  existing  current file and begin logging with a new
              one.

       -s logsize
              Size.  Sets the maximum size (in bytes) that a log file may grow
              before rotation.  The minimum size is 2000.  The default size is
              100000.

       -t     Timestamp.  A current gmtime(3) timestamp string in the form  of
              ``yyyymmddThhmmss.uuuuuu''  is prepended to each line written to
              the log file.

       -V     Version.  Print the version number to stderr and exit.

       -z     Zip.  This option instructs tinylog to run a compression utility
              when  it  rotates  the log file.  The compression utility may be
              specified in the environmental  variable  TINYLOG_ZIP.   If  the
              variable  is  not  set  or empty, tinylog will use a compiled-in
              default, usually /usr/bin/gzip.  The compression utility  should
              be designed to run without any arguments, reading from stdin and
              writing to stdout.  After successful compression,  tinylog  will
              rename the rotated log file with a .Z extension.

ENVIRONMENT
       TINYLOG_ZIP
              If  defined and the -z option is specified, will be taken as the
              executable for the compression utility to use  when  rotating  a
              log file.

SIGNALS
       tinylog  traps  the  following signals for adminstrative control during
       runtime:

       SIGHUP
              Close and rotate current, then continue logging with a new  cur-
              rent.

       SIGTERM
              Stop  reading  stdin,  process  any  pending lines already read,
              flush and close current safely to disk, then exit 0 (no  error).
              Stdin will be left at the first byte of any unprocessed data.

EXIT STATUS
       tinylog exits with the following values:

       0      Normally  tinylog  runs until eof is found on stdin, or until it
              receives a TERM signal.  In  these  cases,  tinylog  writes  any
              pending  lines  to  the log, flushes and closes current, changes
              its mode to 0744, and exits 0.

       100    tinylog failed on startup because of some usage error,  such  as
              invalid  command-line  option or missing argument.  In this case
              tinylog will print a brief diagnostic to stderr on exit.

       111    tinylog found another instance or  active  lockfile  running  in
              dir,  or  failed  due  to some other system or resource error on
              startup.  In this case tinylog will print a brief diagnostic  to
              stderr on exit.

       Otherwise, after startup, tinylog tries very hard not to exit until eof
       is read on stdin.  In the case of system or resource failures,  tinylog
       will  print a diagnostic message to stderr, pause for a brief interval,
       and then retry the failed operation.

AUTHOR
       Wayne Marshall, http://b0llix.net/perp/

SEE ALSO
       perp_intro(8),  perpboot(8),   perpctl(8),   perpd(8),   perpetrate(5),
       perphup(8), perpls(8), perpok(8), perpstat(8), sissylog(8)



perp-2.07                        January 2013                       tinylog(8)