Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages


home | help
cronolog(1m)							  cronolog(1m)

       cronolog	 -  write  log messages	to log files named according to	a tem-

       cronolog	[OPTION]... template

       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 construc-
       ted using template and the current 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 ex-
       ample 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


       after midnight the files


       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	directive.)

       accepts the following options and arguments:

       -H NAME

	      maintain a hard link from	NAME to	the current log	file.

       -S NAME


       -l NAME

	      maintain a symbolic link from NAME to the	current	log file.

       -P NAME

	      maintain a symbolic link from NAME to  the  previous  log	 file.
	      Requires that the	--symlink option is specified, as cronolog re-
	      names the	current	link to	the name specified  for	 the  previous


       --help print a help message and then exit.

       -p PERIOD

	      specifies	the period explicitly as an optional digit string fol-
	      lowed 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 minutes", 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 minutes but not say 7 minutes.

       -d PERIOD

	      specifies	 the delay from	the start of the period	before the log
	      file is rolled over.  For	example	specifying (explicitly or  im-
	      plicitly)	 a  period  of 15 minutes and a	delay of 5 minutes re-
	      sults in the log files being rotated at five past, twenty	 past,
	      twentyfive to and	ten to each hour.   The	delay cannot be	longer
	      than the period.


	      create single output log from template, which is not rotated.

       -x FILE

	      write debug messages to FILE or to the standard error stream  if
	      FILE is "-".  (See the README file for more details.)

       -s TIME

	      pretend that the starting	time is	TIME (for debugging 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 seconds 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	 sepa-
	      rated by spaces, hyphens (-) or solidi (/).


	      Interprete  the  date part of the	starting time the American way
	      (month then day).


	      Interprete the date part of the starting time the	 European  way
	      (day then	month).	 This is the default.


	      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  re-
       placed by their expansion.  Format specifiers consist of	a `%' followed
       by one of the following characters:

       %      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  de-

       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

       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)

       w      day of week (0 ..	6, where 0 corresponds to Sunday)

       x      locale's date representation (e.g. today in  April  in  Britain:

       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	imple-
       mentation of the	strftime function.

       apache(1m) date(1) strftime(3) environ(5)

       More information	and the	latest version of  cronolog  can  be  obtained

       If  you	have  any  suggestions,	 bug  reports, fixes, or enhancements,
       please contact the maintainer at	the website above.

   More	about Apache
       Documentation for the Apache http server	is available from

       The functionality of cronolog could be built into Apache,  thus	saving
       the  overhead  of having	a process per log stream and that of transfer-
       ring data from the server process to the	cronolog  process.   The  main
       complication  is	handling the case where	multiple log streams are writ-
       ten to the same file (template),	for example  where  different  virtual
       servers write to	the same set of	log files.

       Andrew Ford <>

       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			  cronolog(1m)


Want to link to this manual page? Use this URL:

home | help