我知道我可以使用TagProcessor 向Monolog添加属性
$log->getMonolog()->pushProcessor(
new TagProcessor(
array(
'session: ' => session_id(),
'session2' => Session::getId()
)
)
);
我应该扩展Illuminate''Foundation''Bootstrap''ConfigureLogging。这还可以,但是当我尝试添加会话ID时,会出现错误。在生成记录器时,会话和请求对象似乎不可用?
[2016-03-30 18:52:21] local.ERROR: Symfony'Component'Debug'Exception'FatalThrowableError: Fatal error: Class 'Session' not found in /mywebapp/bootstrap/ConfigureLogging.php:43
Stack trace:
#0 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/ConfigureLogging.php(60): Bootstrap'ConfigureLogging->configureTechOpsHandler(Object(Illuminate'Foundation'Application), Object(Illuminate'Log'Writer))
#1 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Bootstrap/ConfigureLogging.php(30): Illuminate'Foundation'Bootstrap'ConfigureLogging->configureHandlers(Object(Illuminate'Foundation'Application), Object(Illuminate'Log'Writer))
#2 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Application.php(203): Illuminate'Foundation'Bootstrap'ConfigureLogging->bootstrap(Object(Illuminate'Foundation'Application))
#3 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(232): Illuminate'Foundation'Application->bootstrapWith(Array)
#4 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(127): Illuminate'Foundation'Http'Kernel->bootstrap()
#5 /mywebapp/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php(99): Illuminate'Foundation'Http'Kernel->sendRequestThroughRouter(Object(Illuminate'Http'Request))
#6 /mywebapp/public/index.php(53): Illuminate'Foundation'Http'Kernel->handle(Object(Illuminate'Http'Request))
#7 {main}
Gist for my custom ConfigureLogging.php文件:https://gist.github.com/quixand/323227a08ede13e1536e51f37000674b
我们最后在ConfigureLogging.php 中使用了以下内容
<?php namespace Bootstrap;
use Illuminate'Log'Writer;
use Illuminate'Contracts'Foundation'Application;
use Illuminate'Foundation'Bootstrap'ConfigureLogging as BaseConfigureLogging;
use Monolog'Handler'RotatingFileHandler;
use Monolog'Handler'StreamHandler;
use Monolog'Formatter'LineFormatter;
use Monolog'Logger as Monolog;
class ConfigureLogging extends BaseConfigureLogging {
/**
* Configure the Monolog handlers for the application.
*
* @param 'Illuminate'Contracts'Foundation'Application $app
* @param 'Illuminate'Log'Writer $log
* @return void
*/
protected function configureDailyHandler(Application $app, Writer $log)
{
// Stream handlers
$logPath = $app->storagePath().'/logs/laravel.log';
$logStreamHandler = new RotatingFileHandler(
$logPath,
$app->make('config')->get('app.log_max_files', 5));
// Adds Username to each log line
$log->getMonolog()->pushProcessor( function ($record) {
$record['extra']['user'] = 'Session::get("username");
$record['extra']['sessionId'] = 'Session::getId();
return $record;
});
// Formatting
// the default output format is "[%datetime%] %channel%.%level_name%: %message% %context% %extra%'n"
$logFormat = "%datetime% [%level_name%] (%channel%) %extra%: %message% %context%'n";
$formatter = new LineFormatter($logFormat, null, true, true);
$logStreamHandler->setFormatter($formatter);
// push handlers
$logger = $log->getMonolog();
$logger->pushHandler($logStreamHandler);
}
}
文件顶部缺少use Session;