On Jan 15, 2007, at 8:55 AM, Mark Toohey wrote:
I'm in the process of adding an interface to log4cxx to allow it to
be used with
some existed C applications. We need to be able to log to different
files from
each module. I wanted to do this by creating separate loggers for
each module
and attaching separate appenders to each one. How can I create new
loggers (I
would like to do it programmatically if possible)?
New loggers are created in response to a getLogger call when the
logger name has not been previously requested. So you could have a
statement like:
log4cxx::LoggerPtr logger(Logger::getLogger("module1"));
as a static member of a class or in a compilation module. Any
subsequent request to the identically named logger will return a
reference to the same logger.
The next step would be to attach appenders to the loggers either
through a configuration file or programmatically. I'm freehanded the
following code snippet to demonstrate creating a FileAppender and
attaching it to a logger. It may have have some errors but it should
be sufficient for you to get the idea.
FileAppenderPtr file(new FileAppender());
file->setFile("module1.log");
//
// a call to activateOptions() is necessary to finish the
configuration of an appender
// before attaching it to a logger
file->activateOptions();
LoggerPtr logger(Logger::getLogger("module1"));
logger->addAppender(file);