## ## L2 - OSSP Logging Library ## Copyright (c) 2001-2002 The OSSP Project (http://www.ossp.org/) ## Copyright (c) 2001-2002 Cable & Wireless Deutschland (http://www.cw.com/de/) ## ## This file is part of OSSP L2, a flexible logging library which ## can be found at http://www.ossp.org/pkg/l2/. ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## ## l2_syslog.pod: L2 syslog replacement manual page ## =pod =head1 NAME B - L2 based syslog(3) replacement =head1 VERSION OSSP L2 L2_VERSION_STR =head1 SYNOPSIS LDFLAGS=`l2-config --ldflags` \ LIBS="-ll2syslog -ll2" \ ./configure [...] =head1 DESCRIPTION B is a companion library to B, offering the syslog(3) API otherwise provided by the Standard C Library (F). Instead of writing to the syslogd(8) process, it uses the powerful B logging capabilities. It is a drop-in link-time replacement which enables any syslog(3) consumer to take advantage of B by just linking this library in before F. The source code of the program remains unchanged. =head1 FILES The B library reads configuration sections located in one or more files. The path to the directory containing these file(s) is specified at compile time and is given to the configure script via C<--with-cfgdir=>I. =head1 OPERATION If an application calls openlog(3) it passes an identification string (I) and a logging facility (I) along. B tries to read the file "CCI". If the file is not readable, all files matching IC are read. In both cases, all data that has been read in is then parsed for configuration sections. These are identified by "CI" at the beginning of a line. The I argument is a PCRE (Perl Compatible Regular Expression) that is matched against a string concatenated from "I/I" given to the openlog(3) call. The configuration section contains an B specification enclosed in curly brackets where the closing bracket must be placed on the beginning of a line and terminated with a semicolon. The B specification may contain $1, $2, ... variables which are filled in from the I regex parts enclosed in round brackets. An B channel tree is build from each matching section and all found trees are merged together with a "null" channel to form a single tree. Further calls to syslog(3) will then inject log messages into this channel tree. =head1 EXAMPLE ident sendmail/.* { debug: prefix(prefix="%%b %%d %%H:%%M:%%S <%%L> $1 [%%P]: ", timezone=local) -> file(path="sendmail.debug.log", append=0,perm=432) }; =head1 OPENPKG OpenPKG RPM packages must require the package "l2" in both C and C and force the packaged application to link against F. =head1 SEE ALSO syslog(3). =head1 AUTHOR Thomas Lotterer =cut