【发布时间】:2020-07-04 14:43:10
【问题描述】:
我希望能够在我的日志记录中添加一个唯一 ID (Uid)。
在示例 1: 中依赖于 config/logging.php 和 ProcessorTap 以下文件未按预期工作。日志记录配置为使用stdout,它指的是ProcessorTap类,在创建日志语句时假设添加一个Uid(根据UidProcessor)
示例 2: 使用纯 Mono 类按预期工作。
为什么示例 1 没有将 Uid 添加到日志中,而 laravel ("laravel/framework": "5.7.*") 也应该使用 Monolog 类?
示例1:调用此api时,Log::info('test')的输出不包含UiD
Route::get('/test', function () {
Log::info('test'); //output = [2020-03-24 04:51:16] local.INFO: test
});
config/logging.php:
'default' => env('LOG_CHANNEL', 'stdout'), //.env LOG_CHANNEL=stdout
'stdout' => [
'driver' => 'monolog',
'handler' => StreamHandler::class,
'with' => [
'stream' => 'php://stdout',
],
'tap' => [
ProcessorTap::class,
],
]
ProcessorTap:
use Monolog\Processor\UidProcessor;
class ProcessorTap
{
/**
* Customize the given logger instance.
*
* @param \Illuminate\Log\Logger $logger
* @return void
*/
public function __invoke($logger)
{
$logger->pushProcessor(new UidProcessor());
}
}
示例 2:正确使用 Uid (a484a6729e14996c0af1)
已添加到 $logger->info('test') 的日志中
use Monolog\Logger;
use Monolog\Processor\UidProcessor;
Route::get('/test', function () {
$logger = new Logger('main');
$logger->pushProcessor(new UidProcessor(20));
$logger->info('test'); // output = [2020-03-24 04:57:26] main.INFO: test [] {"uid":"a484a6729e14996c0af1"}
});
【问题讨论】:
标签: php laravel laravel-5 laravel-5.7 monolog