| | man : cronolog(1m)
cronolog(1m) cronolog(1m)
NAME
cronolog - write log messages to log files named according
to a template
SYNOPSIS
cronolog [OPTION]... template
DESCRIPTION
cronolog is a simple program that reads log messages from
its input and writes them to a set of output files, the
names of which are constructed using template and the cur-
rent date and time. The template uses the same format
specifiers as the Unix date(1) command (which are the same
as the standard C strftime library function).
Before writing a message cronolog checks the time to see
whether the current log file is still valid and if not it
closes the current file, expands the template using the
current date and time to generate a new file name, opens
the new file (creating missing directories on the path of
the new log file as needed unless the program is compiled
with -DDONT_CREATE_SUBDIRS) and calculates the time at
which the new file will become invalid.
cronolog is intended to be used in conjunction with a Web
server, such as Apache to split the access log into daily
or monthly logs. For example the Apache configuration
directives:
TransferLog "|/www/sbin/cronolog
/www/logs/%Y/%m/%d/access.log"
ErrorLog "|/www/sbin/cronolog
/www/logs/%Y/%m/%d/errors.log"
would instruct Apache to pipe its access and error log
messages into separate copies of cronolog, which would
create new log files each day in a directory hierarchy
structured by date, i.e. on 31 December 1996 messages
would be written to
/www/logs/1996/12/31/access.log
/www/logs/1996/12/31/errors.log
after midnight the files
/www/logs/1997/01/01/access.log
/www/logs/1997/01/01/errors.log
would be used, with the directories 1997, 1997/01 and
1997/01/01 being created if they did not already exist.
(Note that prior to version 1.2 Apache did not allow a
program to be specified as the argument of the ErrorLog
March 1998 1
cronolog(1m) cronolog(1m)
directive.)
Options
accepts the following options and arguments:
-H NAME
--hardlink=NAME
maintain a hard link from NAME to the current log
file.
-S NAME
--symlink=NAME
-l NAME
--link=NAME
maintain a symbolic link from NAME to the current
log file.
-P NAME
--prevlink=NAME
maintain a symbolic link from NAME to the previous
log file. Requires that the --symlink option is
specified, as cronolog renames the current link to
the name specified for the previous link.
-h
--help print a help message and then exit.
-p PERIOD
--period=PERIOD
specifies the period explicitly as an optional
digit string followed by one of units: seconds,
minutes, hours, days, weeks or months. The count
cannot be greater than the number of units in the
next larger unit, i.e. you cannot specify "120 min-
utes", and for seconds, minutes and hours the count
must be a factor of the next higher unit, i.e you
can specify 1, 2, 3, 4, 5, 6, 10, 15, 20 or 30 min-
utes but not say 7 minutes.
-d PERIOD
--delay=PERIOD
specifies the delay from the start of the period
before the log file is rolled over. For example
specifying (explicitly or implicitly) a period of
15 minutes and a delay of 5 minutes results in the
March 1998 2
cronolog(1m) cronolog(1m)
log files being rotated at five past, twenty past,
twentyfive to and ten to each hour. The delay
cannot be longer than the period.
-o
--once-only
create single output log from template, which is
not rotated.
-x FILE
--debug=FILE
write debug messages to FILE or to the standard
error stream if FILE is "-". (See the README file
for more details.)
-s TIME
--start-time=TIME
pretend that the starting time is TIME (for debug-
ging purposes). TIME should be something like DD
MONTH YYYY HH:MM:SS (the day and month are reversed
if the american option is specified). If the sec-
onds are omitted then they are taken as zero and if
the hours and minutes are omitted then the time of
day is taken as 00:00:00 (i.e. midnight). The day,
month and year can be separated by spaces, hyphens
(-) or solidi (/).
-a
--american
Interprete the date part of the starting time the
American way (month then day).
-e
--european
Interprete the date part of the starting time the
European way (day then month). This is the
default.
-v
--version
print version information and exit.
Template format
Each character in the template represents a character in
the expanded filename, except for date and time format
specifiers, which are replaced by their expansion. Format
specifiers consist of a `%' followed by one of the follow-
ing characters:
March 1998 3
cronolog(1m) cronolog(1m)
% a literal % character
n a new-line character
t a horizontal tab character
Time fields:
H hour (00..23)
I hour (01..12)
p the locale's AM or PM indicator
M minute (00..59)
S second (00..61, which allows for leap seconds)
X the locale's time representation (e.g.: "15:12:47")
Z time zone (e.g. GMT), or nothing if the time zone
cannot be determined
Date fields:
a the locale's abbreviated weekday name (e.g.:
Sun..Sat)
A the locale's full weekday name (e.g.: Sunday ..
Saturday)
b the locale's abbreviated month name (e.g.: Jan ..
Dec)
B the locale's full month name, (e.g.: January ..
December)
c the locale's date and time (e.g.: "Sun Dec 15
14:12:47 GMT 1996")
d day of month (01 .. 31)
j day of year (001 .. 366)
m month (01 .. 12)
U week of the year with Sunday as first day of week
(00..53, where week 1 is the week containing the
first Sunday of the year)
W week of the year with Monday as first day of week
(00..53, where week 1 is the week containing the
first Monday of the year)
March 1998 4
cronolog(1m) cronolog(1m)
w day of week (0 .. 6, where 0 corresponds to Sunday)
x locale's date representation (e.g. today in April
in Britain: "13/04/97")
y year without the century (00 .. 99)
Y year with the century (1970 .. 2038)
Other specifiers may be available depending on the C
library's implementation of the strftime function.
SEE ALSO
apache(1m) date(1) strftime(3) environ(5)
More information and the latest version of cronolog can be
obtained from
http://www.ford-mason.co.uk/resources/cronolog/
If you have any suggestions, bug reports, fixes, or
enhancements, please mail them to the author.
More about Apache
Documentation for the Apache http server is available from
http://www.apache.org
FUTURE DIRECTIONS
The functionality of cronolog could be built into Apache,
thus saving the overhead of having a process per log
stream and that of transferring data from the server pro-
cess to the cronolog process. The main complication is
handling the case where multiple log streams are written
to the same file (template), for example where different
virtual servers write to the same set of log files.
AUTHOR
Andrew Ford <A.FordATford-mason.uk>
cronolog is based on a program called rotatelogs by Ben
Laurie, which is packaged with the Apache web server.
The symbolic link option was suggested by Juergen Lesny.
March 1998 5
|