/** * Configure logging for Eventum application. * * This can be used like: * * Logger::api()->addError('Sent to $api Logger instance'); * Logger::application()->addError('Sent to $application Logger instance'); */ public static function initialize() { // Configure it use Eventum timezone Monolog\Logger::setTimezone(new DateTimeZone(APP_DEFAULT_TIMEZONE)); // create 'app' instance, it will be used base of other loggers $logfile = self::createFileHandler('eventum.log'); $app = static::createLogger('app', array(), array())->pushHandler($logfile); // setup mail logger if enabled $mailer = self::createMailHandler(); if ($mailer) { $app->pushHandler($mailer); } $app->pushProcessor(new Monolog\Processor\WebProcessor()); $app->pushProcessor(new Monolog\Processor\MemoryUsageProcessor()); $app->pushProcessor(new Monolog\Processor\MemoryPeakUsageProcessor()); $app->pushProcessor(function (array $record) { $record['extra']['version'] = APP_VERSION; return $record; }); // add logger for database static::createLogger('db'); // log auth channel to auth.log static::createLogger('auth', array(self::createFileHandler('auth.log'))); // add cli logger with different output file static::createLogger('cli', array(self::createFileHandler('cli.log'))); static::registerErrorHandler($app); }
protected function log($message) { $tz = new \DateTimeZone('UTC'); $log = new \Monolog\Logger(__NAMESPACE__); $log->setTimezone($tz); $error_handler = new \Monolog\Handler\ErrorLogHandler(); $log->pushHandler($error_handler); // adds url,client ip,http_method,server and referrer to each log $web_processor = new \Monolog\Processor\WebProcessor(); $log->pushProcessor($web_processor); // adds a unique identifier to each log // e.g. "uid":"0ce8d6d" $uid_processor = new \Monolog\Processor\UidProcessor(); $log->pushProcessor($uid_processor); $log->info(get_called_class() . ' ' . $message, $this->getContext()); }
/** * Set the timezone to be used for the timestamp of log records. * * This is stored globally for all Logger instances * * @param \DateTimeZone $tz Timezone object */ public static function setTimezone(DateTimeZone $tz) { return Monolog\Logger::setTimezone($tz); }