gpt4 book ai didi

laravel - 如何在Laravel中将数据添加到所有日志记录?

转载 作者:行者123 更新时间:2023-12-04 17:00:26 25 4
gpt4 key购买 nike

我想在Laravel应用程序中的所有日志记录中添加一些数据。

我认为了解当前用户的用户名和/或客户端IP地址会有所帮助。

目前,我正在通过以下方式手动添加它:

Log::info('Pre-paid activation.', array('username' => Auth::user()->username));

但是我想知道如何添加一个监听器或使所有日志记录都具有用户名(如果可用)的方法。

最佳答案

由于Laravel带有Monolog开箱即用,因此非常简单。可以通过编辑app/start/global.php并在以Log::useFiles开头的行之后添加以下内容来轻松实现:

Log::useFiles(storage_path().'/logs/laravel.log');
$monolog = Log::getMonolog();
$monolog->pushProcessor(function ($record) {
$record['extra']['user'] = Auth::user() ? Auth::user()->username : 'anonymous';
$record['extra']['ip'] = Request::getClientIp();
return $record;
});

基本上,我们使用底层的Monolog实例注册一个处理器,该处理器将拦截要写入的任何日志记录。结果将类似于以下内容:

[2014-04-12 23:07:35] local.INFO: Pre-paid activation. [] {"user":"anonymous","ip":"::1"}



有关Monolog处理器的更多信息: https://github.com/Seldaek/monolog/blob/master/doc/01-usage.md#using-processors

Extra:硬编码的 extra用来告诉Monolog将数据添加为额外的信息(多余的说法)。在实践中,这是为了避免覆盖原始日志调用中添加的任何上下文数据。

关于laravel - 如何在Laravel中将数据添加到所有日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23037393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com