Hi, If i call the configure() function after add the appender, none of them works. Well, all the loggers and appenders inside the property file are ignored.
If i try put the logger line of the property file on the bottom, happens the same that if that line are on the top of the property file. And finally if I don't call the configure function, only stdout log works (default appender) but the file appender added inside the program is still not working. Maybe we need to put some more sets to the $appender or something like that to add an appender inside the program. Thanks, Miquel On Wednesday 14 April 2010 17:08:03 Christian Grobmeier wrote: > Hm > > I think I know the problem. Its because you first need to configure > the appenders and then the loggers. Otherwise the references are not > set. This is also true for property files in general in log4php. First > appenders, then loggers. > > In your case - I am not sure if there is a workaround for this because > you configuration is mixed. You probably can try it out with putting > the rootLogger defintion on the bottom of your property file or > assigning the appender before calling configure(). i am not sure if it > helps. > > There is already an issue in Jira which addresses this > > Christian > > 2010/4/14 Miquel Canes <miquel.ca...@cast-info.es>: > > Hello, > > It doesn't work. > > > > Logger::configure(dirname(__FILE__) . '/../log4php.properties'); > > > > $logger = Logger::getRootLogger(); > > > > $appender = new LoggerAppenderFile("programmatically"); > > $layout = new LoggerLayoutPattern("[%p] %t %c - %m%n"); > > > > $appender->setLayout($layout); > > $appender->setFileName("programmatically.log"); > > $appender->setAppend(true); > > $appender->setThreshold("ALL"); > > $logger->addAppender($appender); > > > > echo $logger->isInfoEnabled() . "\n"; > > > > $allappenders = $logger->getAllAppenders(); > > foreach ($allappenders as $nappender){ > > echo $nappender->getName()."\n"; > > } > > > > $logger->info("info text"); > > > > With this code it write: > > 1 > > stdout > > R > > programmatically > > > > > > I'm using a config file too and the file appender defined on it works. > > > > log4php.properties content: > > > > #R - Default Log file appender. > > log4php.rootLogger=all, stdout, R > > > > log4php.appender.stdout=LoggerAppenderConsole > > log4php.appender.stdout.layout=LoggerLayoutPattern > > > > # Pattern to output the caller's file name and line number. > > #log4php.appender.stdout.layout.ConversionPattern=[%p] %t %c - %m%n > > > > log4php.appender.R=LoggerAppenderRollingFile > > log4php.appender.R.File=testrollingappender.log > > > > log4php.appender.R.MaxFileSize=100KB > > # Keep one backup file > > log4php.appender.R.MaxBackupIndex=1 > > > > log4php.appender.R.layout=LoggerLayoutPattern > > log4php.appender.R.layout.ConversionPattern=[%p] %t %c - %m%n > > > > > > Maybe, a programmatically appender cannot be added if a configure file is > > used? But it does not make any sense. > > > > Thanks, > > Miquel > > > > On Wednesday 14 April 2010 16:23:59 Christian Grobmeier wrote: > >> Hello, > >> > >> whats returned if you do: > >> > >> echo $logger->isInfoEnabled(); > >> > >> My guess is that info level is not enabled for the root logger > >> > >> Also you might need to set a threshhold for your appender: > >> $appender->setThreshold($threshhold); > >> > >> which is in fact a LoggerLevel. If you use ALL, you outputing all > >> > >> Pls let me know if that worked for you > >> > >> Christian > >> > >> 2010/4/13 Miquel Canes <miquel.ca...@cast-info.es>: > >> > Hello, > >> > > >> > I'm trying to add a file appender programmatically. > >> > > >> > I'm using this piece of code > >> > > >> > $logger = Logger::getRootLogger(); > >> > > >> > $appender = new LoggerAppenderFile("programmatically"); > >> > $layout = new LoggerLayoutPattern("[%p] %t %c - %m%n"); > >> > > >> > $appender->setLayout($layout); > >> > $appender->setFileName("programmatically.log"); > >> > $appender->setAppend(true); > >> > $logger->addAppender($appender); > >> > > >> > $allappenders = $logger->getAllAppenders(); > >> > foreach ($allappenders as $nappender){ > >> > echo $nappender->getName()."\n"; > >> > } > >> > > >> > $logger->info("info text"); > >> > > >> > > >> > > >> > It show the new appender when he print all the appenders but it > >> > doesn't create the new log file. > >> > > >> > How can I add a new file appender to the logger? > >> > > >> > Thanks, > >> > Miquel > >> > > >> > *Advertencia legal: en virtud de lo establecido en la Ley Orgánica > >> > 15/1999 de Protección de Datos de Carácter Personal, le informamos de > >> > que los datos personales que pueda facilitarnos se incorporaran a un > >> > fichero automatizado titularidad de CAST INFO, S.A. con la finalidad > >> > de gestionar la relación negocial que nos vincula. Podrá revocar su > >> > consentimiento al tratamiento de los datos, así como ejercer sus > >> > derechos de acceso, rectificación, cancelación u oposición > >> > dirigiéndose por escrito a CAST INFO domiciliada en C/ Tuset 23, 1º > >> > -- 08006 Barcelona, o a la dirección de correo electrónico > >> > l...@cast-info.es. > >> > > >> > Este mensaje y los ficheros anexos que pueda contener son > >> > confidenciales, pueden contener información sometida a secreto > >> > profesional y se dirige exclusivamente a su destinatario. Si ha > >> > recibido este mensaje por error o tiene conocimiento del mismo por > >> > cualquier motivo, le rogamos que nos lo comunique inmediatamente por > >> > este mismo medio y se abstenga de utilizarlo, reproducirlo, > >> > alterarlo, archivarlo o comunicarlo a terceros. El emisor no se > >> > responsabiliza de posibles perjuicios derivados de la captura, > >> > incorporaciones de virus o cualesquiera otras manipulaciones > >> > efectuadas por terceros. > >> > > >> > Antes de imprimir este e-mail piense bien si es necesario hacerlo. > >> > >> *Advertencia legal: en virtud de lo establecido en la Ley Org�nica > >> 15/1999 de Protecci�n de Datos de Car�cter Personal, le informamos de > >> que los datos personales que pueda facilitarnos se incorporaran a un > >> fichero automatizado titularidad de CAST INFO, S.A. con la finalidad de > >> gestionar la relaci�n negocial que nos vincula. Podr� revocar su > >> consentimiento al tratamiento de los datos, as� como ejercer sus > >> derechos de acceso, rectificaci�n, cancelaci�n u oposici�n dirigi�ndose > >> por escrito a CAST INFO domiciliada en C/ Tuset 23, 1� -- 08006 > >> Barcelona, o a la direcci�n de correo electr�nico l...@cast-info.es. > >> > >> Este mensaje y los ficheros anexos que pueda contener son > >> confidenciales, pueden contener informaci�n sometida a secreto > >> profesional y se dirige exclusivamente a su destinatario. Si ha > >> recibido este mensaje por error o tiene conocimiento del mismo por > >> cualquier motivo, le rogamos que nos lo comunique inmediatamente por > >> este mismo medio y se abstenga de utilizarlo, reproducirlo, alterarlo, > >> archivarlo o comunicarlo a terceros. El emisor no se responsabiliza de > >> posibles perjuicios derivados de la captura, incorporaciones de virus o > >> cualesquiera otras manipulaciones efectuadas por terceros. > >> > >> Antes de imprimir este e-mail piense bien si es necesario hacerlo.