Hi,
Finally, after using the php debuger, i found what's my problem.

$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->activateOptions();
$logger->addAppender($appender);

$allappenders = $logger->getAllAppenders();
foreach ($allappenders as $nappender){
        echo $nappender->getName()."\n";
}

$logger->info("info text");

This function: $appender->activateOptions() creates the file descriptor.
Must be called before sending any log message.

Thanks,
Miquel

On Wednesday 14 April 2010 17:52:58 Miquel Canes wrote:
> 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.

Reply via email to