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);




Reply via email to