Monday, March 29, 2010

log4php programmatically runtime setfile in appender LoggerAppenderFile

I don't PHP very often but lately I needed a robust log. I used a lot log4j so immediately turn to log4php The documentation is still very poor with very little examples on the net. In particular, I needed to set some options at runtime or programmatically, especially the filename for the LoggerAppenderFile, so here is a little minimalistic example on how to do it:



require_once('log4php/Logger.php');

$rootlogger = Logger::getRootLogger();
$rootlogger->setLevel(LoggerLevel::DEBUG);

$appender = new LoggerAppenderFile("MyAppender");
$appender->setFile("mylogfile.log", true);
$appenderlayout = new LoggerLayoutTTCC();
$appender->setLayout($appenderlayout);
$appender->activateOptions();

$rootlogger->removeAllAppenders();
$rootlogger->addAppender($appender);

$rootlogger->info("info");
$rootlogger->error("error");
$rootlogger->debug("debug");




if you don't use the rootlogger you don't need to removeAllAppenders in order to get rid of the console one.