You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4php-dev@logging.apache.org by Christian Grobmeier <gr...@gmail.com> on 2010/09/01 10:34:58 UTC

Re: Problem with utilisation of multiple file_properties

Hello,

I am not sure if I understand you correctly, but I will try.

You have:

Logger::configure($_SERVER["DOCUMENT_ROOT"]."/log4php/appender_file.properties");
       $logger = Logger::getRootLogger();
 $appender = new LoggerAppenderFile("MyAppender");
 $appender->setFile(LOG_FOLDER.'/'.PHP_ERRORS_LOG_FILE_NAME, true);
 $appenderlayout = new LoggerLayoutTTCC();
 $appender->setLayout($appenderlayout);
 $appender->activateOptions();
 $logger->removeAllAppenders();
 $logger->addAppender($appender);
 $logger->debug($userMessage);
}

each time you do this, you add a new appender. You shouldn't do it like this.
I recommend you something like this:

1) configure with a file
2) add you manual appenders
3) initialize (or getRootLogger, which initializes internally)
4) use it

In you case that would be more like:

function phpErrors($userMessage){
 $logger = Logger::getLogger("application");
 $logger->debug($userMessage);
}

//Fonction which sends a mail
function mailErrors($from="", $to="", $subject="",$userMessage){
$logger = Logger::getLogger("email");
$logger->error($userMessage);
}

function configureMyLogger() {
Logger::configure($_SERVER["DOCUMENT_ROOT"]."/log4php/appender_file.properties");

// Optional: this can be done in the property file of course
$appender = new LoggerAppenderFile("MyAppender");
$appender->setFile(LOG_FOLDER.'/'.PHP_ERRORS_LOG_FILE_NAME, true);
 $appenderlayout = new LoggerLayoutTTCC();
 $appender->setLayout($appenderlayout);
 $appender->activateOptions();
 $logger->removeAllAppenders();
 $logger->addAppender($appender);
}

configureMyLogger();
phpErrors(...);
mailErrors(...);


Your property file could look like:

//My appender_file.properties
log4php.appender.default = LoggerAppenderFile
log4php.appender.default.file = ../../log/file.log
log4php.appender.default.layout = LoggerLayoutTTCC
log4php.rootLogger = DEBUG, default

//My appender_mail.properties
log4php.appender.email = LoggerAppenderMail
log4php.appender.email.layout = LoggerLayoutTTCC
log4php.appender.email.from = ***@***
log4php.appender.email.to = ***@***
log4php.appender.email.subject = Log4php test

log4php.rootLogger = ERROR, email
log4php.logger.email=ERROR, email
log4php.logger.application=ERROR, default

Hope that makes everything more clear to you now :-)
Cheers
Christian

On Tue, Aug 31, 2010 at 10:03 PM, zalex06 <za...@hotmail.fr> wrote:
>
> Ok, but unfortunately I have until used this solution (see my first post) :(
> An other idea ?
>
>
>
> Christian grobmeier wrote:
>>
>>> It is a good solution to do in each function $logger =
>>> Logger::getRootLogger(); ?
>>
>> thats ok. Logger::getRootLogger will always return the same logger
>> instance. So you can do something like that:
>>
>> Logger:configure(...);
>>
>> function blub() {
>>   $logger = Logger::getRootLogger();
>>   $logger->doSomething();
>> }
>>
>> function blub2() {
>>   $logger = Logger::getRootLogger();
>>   $logger->doSomething();
>> }
>>
>> Did that help you?
>> Christian
>>
>>
>
> --
> View this message in context: http://old.nabble.com/Problem-with-utilisation-of-multiple-file_properties-tp29581278p29587118.html
> Sent from the Log4php - Dev mailing list archive at Nabble.com.
>
>