我正在开发一个多租户应用,我需要记录比传递到日志外观的数据更多的数据。我的意思是,每次我这样做......
Log::info('something happened');
我明白了:
[2017-02-15 18:12:55] local.INFO:发生了什么事
但我希望得到这个:
[2017-02-15 18:12:55] [我的ec2实例ID] [client_id] local.INFO:发生了什么事
正如您所看到的,我正在记录EC2实例ID和我的应用程序的客户端ID。我当然正在简化这个,因为我需要在那里记录更多的东西。当我使用和聚合这些日志时,拥有这些额外的字段可以非常方便地找出出错的地方和位置。
在Zend Framework中,我通常将记录器子类化并在我的子类中添加这些额外的字段,但我不确定如何使用Laravel。我无法找到记录器实例化的位置,以便我可以插入自定义记录器(如果这甚至是Laravel中的方法)。
所以,我不是在问如何获取EC2实例ID和其他东西,我只是想知道Laravel记录器“热线”的正确方法是能够插入它。
答案 0 :(得分:1)
只是一个想法... Laravel中的记录器实际上是一个Monolog实例...你可以在它上面推一个处理程序,并为每个条目做任何你需要的处理......就像这样......
<?php
$logger->pushProcessor(function ($record) {
$record['extra']['dummy'] = 'Hello world!';
return $record;
});
根据Laravel文档,您可以在启动时连接到monolog配置...
自定义Monolog配置
如果您想完全控制Monolog的方式 为您的应用程序配置,您可以使用该应用程序 configureMonologUsing方法。您应该调用此方法 在$ app变量之前的bootstrap / app.php文件中 由文件返回:
$app->configureMonologUsing(function ($monolog) {
$monolog->pushHandler(...);
});
return $app;
所以只需将$ monolog实例上的处理器推送到钩子......
只是一个想法,我没有在Laravel中尝试过这个但是之前使用过Monolog ...