Skip to content

An enhanced and more portable version of `newsyslog` -- a tool for archiving log files

License

Notifications You must be signed in to change notification settings

robohack/newsyslog

Repository files navigation

NEWSYSLOG -- A portable and enhanced version of this old standard

This file:  Copyright (C) by Planix, Inc.
	    see COPYING for details

This is an updated version of a package put together by Theodore Ts'o ,
of MIT Project Athena (which is included in NetBSD, FreeBSD, OpenBSD,
and probably other OS' too).

What does this version of newsyslog have to offer over others?

	- It is more portable (using GNU Autoconf) and it can be
	  compiled and installed on most any modern Unix or Unix-like
	  system.

	- It has support for fixed time-of-day daily archiving with a
	  command-line option to identify the daily roll-over invocation
	  (which may be at midnight, or at any other regular daily time).

	- It supports the FreeBSD feature that allows specification of
	  the log roll-over time as a daily, weekly, or monthly interval
	  (with optional time-of-day specification for the last two).
	  [The other overly flexible, ISO 8601 interpretation of the
	  interval "@" option is not supported -- it is too generic and
	  not meaningful enough in the context of log file management.]

	- It supports optional PID files so that non-standard daemons
	  can be told to re-open their logfiles after archiving has
	  taken place.  (Including /dev/null which disables signalling
	  of any daemon when the specified log file is rolled over.)

	- It can send a signal other than SIGHUP to the daemon
	  associated with a given log file.

	- It can leave the most recently archived log file uncompressed,
	  which is necessary for daemons like httpd and smail because
	  they continue to write to the current log file until their
	  current jobs have completed.  (This also makes it much easier
	  to review recent log data with normal Unix tools.)  [NetBSD
	  now has this feature.]

	- It supports the FreeBSD feature of being able to restrict
	  processing to just those log files specified on the command
	  line.

	- Unlike the NetBSD version it first parses the config file
	  before taking any action, meaning that if any errors are
	  encountered it will report them and quit without doing
	  anything.

	- Unlike the FreeBSD version, it will roll a log file if
	  *either* the interval or size limits have been reached
	  (FreeBSD's version makes it too easy to have a rapidly growing
	  log file overflow the filesystem).

	- Unlike the NetBSD version it always creates any missing log
	  file (though this can be disabled on a per-file basis).

	- It uses an advisory lock on the current configuration file to
	  prevent multiple invocations from tripping over each other.

	- The documentation is far better!

(For more specific details and recent changes see the NEWS file.)


TO BUILD NEWSYSLOG

Normally you should just follow the instructions in the INSTALL file
unless special instructions below apply.


TO BUILD NEWSYSLOG on *BSD SYSTEMS

If you are building newsyslog on a BSD-based system you can also use
"Makfile.BSD".  This is in fact necessary if your system requires
installation of pre-formatted manual pages (otherwise you'll have to
install them by hand).  The simplest way to do this is to run the
"newsyslog2netbsd.sh" script, then go into the "import.d" directory
created by the script, check the Makefile and possibly update the
default options in it, and finaly then simply run "make".  Note that if
you want to change the location of the install, or other pathnames then
you should change them in the "newsyslog2netbsd.sh" script *before* you
run it:

	# inspect and/or edit newsyslog2netbsd.sh
	sh newsyslog2netbsd.sh
	cd import.d
	# inspect and/or edit Makefile
	make
	make install

The same procedure should work fine for FreeBSD if you add
"__FreeBSD__=1" to the make commands above.  OpenBSD may masquerade well
enough as NetBSD, w.r.t. how makefiles work anyway, for OpenBSD users to
pretend while running make that they are using NetBSD.  :-)

If you actually do copy the contents of the import.d directory into your
system source tree to replace your native newsyslog then you should add
the appropriate __*BSD__ definition to the Makefile.

Of course newsyslog can also be built using the GNU Autoconf based build
system and a ``normal'' (i.e. Unix compatible) "make".

Please see the file "INSTALL" for overall instructions on how to
configure and build this package using the GNU Autoconf generated
"configure" script.

In general you need only run the following command sequence:

	./configure && make && make install

(see "CUSTOM CONFIGURATION OPTIONS" below for other "configure" options)


BUILDING ON SYSTEMS WITHOUT TROFF "doc" MACROS (including Solaris)

On systems without the "doc" macros (or without "nroff", or even with
just an incompatible version of "soelim"), you can still install and
read the distributed 'cat'-table manual pages.

For example if you get an error during the first "make" that says
something like "nroff: Cannot find library -mdoc", or "nroff: not
found", or "-I: No such file or directory", then run the following
command instead of running "make install":

	make copy-dist-mans install

This does not guarantee your "man" command will be able to find and
present the resulting files, of course.  If you really get into a bind
over this the best I can suggest is to write a small "wrapper" manual
page using the old-style man(7) macros that directs readers to view the
pre-formatted file in whatever location it gets installed in.  On some
systems you might be able to fool the "man" command into displaying the
pre-formatted version if you supply a dummy nroff source file that has
an older timestamp than the pre-formatted file.  Fooling "catman" to get
a proper index entry for "apropos" ("man -k") might be harder, but on
most systems the index file is just plain text (though in some
particular sorted order and with each line having a specific format).
If anyone wants to contribute a "mdoc" to "man" translator, I'm all for
it, but I will not try to maintain documents in both formats
simultaneously -- whatever support for "man" there is, it must be
completely mechanical and automatable.


CUSTOM CONFIGURATION OPTIONS

You may choose to use GNU Zip in preference to the default compress
program as the archive compression too with:

	./configure --with-gzip

WARNING:  If you have previously configured newsyslog without the above
option and now wish to add it you will have to remove ./config.cache
first to prevent the wrong program pathname from being used.

Beware that you may need to specify exactly where your syslogd keeps
it's PID file.  This can be done either by specifying an alternate
directory prefix to ./configure in this way ("/run/syslog.pid" will be
appended to the directory name given):

	./configure --localstatedir=/var

or by specifying an explicit pathname to ./configure in this way:

	./configure --with-syslog_pid=/var/run/mysyslog.pid

The default configuration file location can be modified by specifying an
alternate directory to ./configure in this way ("/newsyslog.conf will be
appended to the directory name given):

	./configure --sysconfdir=/etc

or by specifying an explicit pathname to ./configure in this way:

	./configure --with-newsyslog_conf=/etc/newsyslog.conf

Try './configure --help' for more options.


FOR MORE INFORMATION

If you have any troubles, questions, or feature requests, please send
mail to <bugs@robohack.planix.com>.  The lastest version of this
software is available at:

	<URL:ftp://ftp.planix.com/pub/Planix/newsyslog.tar.gz>

or:

	<URL:ftp://ftp.weird.com/pub/local/newsyslog.tar.gz>


-- 
						Greg A. Woods
						<woods-newsyslog@planix.com>
						<woods-newsyslog@robohack.ca>
						<woods-newsyslog@weird.com>


#ident	"@(#)newsyslog:README:$Format:%D:%ci:%cN:%h$"