Using log4php
A how-to for the excellent log4php:
- Rolling daily file
- Log error statements into one file, and info statements into another
- Send emails
Usage
include_once('/var/www/example/components/log4php/2.0.0/Logger.php');
class Example
{
private $logger;
function __construct()
{
$loggerConfig = '/var/www/example/config/log4php.xml';
Logger::configure($loggerConfig);
$this->logger = Logger::getLogger('example');
}
public function doSomething()
{
$var = $this->getSomeValue();
$this->logger->debug('in doSomething: $var = ' . $var);
try
{
$this->doSomethingSpecific();
}
catch (Exception $ex)
{
$this->logger->error($ex->getMessage());
throw new Exception("There is a problem with Something. We apologize for any inconvenience caused.");
}
$this->logger->info("doSomething successful");
}
}
log4php.xml
<log4php:configuration xmlns:log4php="http://logging.apache.org/log4php/">
<appender name="default" class="LoggerAppenderDailyFile">
<param name="file" value="/var/www/example/logs/%s.log" />
<param name="datePattern" value="Ymd" />
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m (at %F line %L)%n" />
</layout>
</appender>
<appender name="exampleDebugLog" class="LoggerAppenderDailyFile">
<param name="file" value="/var/www/example/logs/debug.%s.log" />
<param name="datePattern" value="Ymd" />
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m%n" />
</layout>
<filter class="LoggerFilterLevelRange">
<param name="LevelMin" value="debug" />
<param name="LevelMax" value="debug" />
</filter>
<filter class="LoggerFilterDenyAll" />
</appender>
<appender name="exampleInfoLog" class="LoggerAppenderDailyFile">
<param name="file" value="/var/www/example/logs/info.%s.log" />
<param name="datePattern" value="Ymd" />
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m%n" />
</layout>
<filter class="LoggerFilterLevelRange">
<param name="LevelMin" value="info" />
<param name="LevelMax" value="info" />
</filter>
<filter class="LoggerFilterDenyAll" />
</appender>
<appender name="exampleErrorLog" class="LoggerAppenderDailyFile">
<param name="file" value="/var/www/example/logs/errors.%s.log" />
<param name="datePattern" value="Ymd" />
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m (at %F line %L)%n" />
</layout>
<filter class="LoggerFilterLevelRange">
<param name="LevelMin" value="error" />
<param name="LevelMax" value="fatal" />
</filter>
<filter class="LoggerFilterDenyAll" />
</appender>
<appender name="exampleErrorEmail" class="LoggerAppenderMail">
<param name="from" value="sys@example.com" />
<param name="to" value="support@example.com" />
<param name="subject" value="Error" />
<layout class="LoggerLayoutPattern">
<param name="ConversionPattern" value="%d{Y-m-d H:i:s} [%p] %c: %m (at %F line %L)%n" />
</layout>
<filter class="LoggerFilterLevelRange">
<param name="LevelMin" value="error" />
<param name="LevelMax" value="fatal" />
</filter>
<filter class="LoggerFilterDenyAll" />
</appender>
<root>
<level value="DEBUG" />
<appender_ref ref="default" />
</root>
<logger name="example" additivity="false">
<level value="INFO" />
<appender_ref ref="exampleInfoLog" />
<appender_ref ref="exampleErrorLog" />
<appender_ref ref="exampleErrorEmail" />
</logger>
</log4php:configuration>
Comments: