Mark Mendel <mgm7734@users.sourceforge.net> started a parallel log4c projet with a different philosophy. The design is macro oriented, so much lighter and faster which perfect for kernel development.
Log4c is also available from SourceForge (http://www.sourceforge.net/projects/log4c/). This is work in progress.
__attribute__
, so you will need GCC to compile it. This will probably change one day.
$ gzip -dc log4c-1.0.12.tar.gz | tar tvf - $ cd log4c-1.0.12/ $ ./configure --prefix=/path/of/installation $ make $ make install
Checkout the INSTALL
file for installation and the generated doxygen documentation for more information.
$ sudo rpm -Uvh log4c-1.0.12.i386.rpm log4c-devel-1.0.12.i386.rpm
${LOG4C_RCPATH}/log4rc
${HOME}/
.log4crc
./log4crcLOG4C_RCPATH
holds the prefix used for installation.log4crc
configuration file uses an XML syntax. The root element is <log4c>
and it can be used to control the configuration file version interface with the attribute "version"
. The following 4 elements are supported: <config>
, <category>
, <appender>
and <layout>
.
<config>
element controls the global log4c configuration. It has 3 sub elements. The <nocleanup>
flag inhibits the log4c destructors routines. The <bufsize>
element sets the buffer size used to format log4c_logging_event_t objects. If is set to 0, the allocation is dynamic (the <debug>
element is currently unused).<category>
element has 3 possible attributes: the category "name"
, the category "priority"
and the category "appender"
. Future versions will handle multple appenders per category.<appender>
element has 3 possible attributes: the appender "name"
, the appender "type"
, and the appender "layout"
.<layout>
element has 2 possible attributes: the layout "name"
and the layout "type"
.log4crc
configuration file:
<?xml version="1.0" encoding="ISO-8859-1"?> <!DOCTYPE log4c SYSTEM ""> <log4c version="1.0.12"> <config> <bufsize>0</bufsize> <debug level="0"/> <nocleanup>0</nocleanup> </config> <!-- root category ========================================= --> <category name="root" priority="notice"/> <!-- default appenders ===================================== --> <appender name="stdout" type="stream" layout="basic"/> <appender name="stderr" type="stream" layout="dated"/> <appender name="syslog" type="syslog" layout="basic"/> <!-- default layouts ======================================= --> <layout name="basic" type="basic"/> <layout name="dated" type="dated"/> </log4c>
This initial version of the log4c configuration file syntax is quite different from log4j. XML seemed the best choice to keep the log4j configuration power in a C API.
LOG4C_RCPATH
holds the path to the main log4crc
configuration file LOG4C_PRIORITY
holds the "root"
category priority LOG4C_APPENDER
holds the "root"
category appenderThis project would not have existed without Ceki Gülcü <cgu@urbanet.ch>, the creator and maintainer of Log4j, nor without Bastiaan Bakker <bastiaan.bakker@lifeline.nl>, who intiated me with Log4Cpp.
Very much thanks to Jeff Smith for writing a primer on how to use Log4c effectively
COPYING
file for full legal details.