Logging Laravel日志未显示行和文件
我的日志记录如下:Logging Laravel日志未显示行和文件,logging,laravel-5.2,Logging,Laravel 5.2,我的日志记录如下: Log::debug("test"); 这是文件中的行: [2016-09-09 00:02:03]本地调试:测试 如何配置日志以写入行和文件 谢谢您实际上可以配置Laravel logger来完成许多事情。我以前做过,在你的情况下会是这样的: app('log')->getMonolog()->pushProcessor(function ($record) { if (array_get($record, 'level_name') === 'DEB
Log::debug("test");
这是文件中的行:
[2016-09-09 00:02:03]本地调试:测试
如何配置日志以写入行和文件
谢谢您实际上可以配置Laravel logger来完成许多事情。我以前做过,在你的情况下会是这样的:
app('log')->getMonolog()->pushProcessor(function ($record) {
if (array_get($record, 'level_name') === 'DEBUG') {
// ...
}
return $record;
});
[2016-09-09 09:21:29] local.DEBUG: Debug info "My debug message" on file .../app/Http/Controllers/PresentationController.php:15
主要的问题是:您试图添加实际上不可能与PHP一致的信息,即包含触发日志函数的代码的文件和行。在您的例子中,您正在使用Facade调用方法,该方法将解析为Laravel的日志编写器,该日志编写器反过来调用Monolog包,然后该包将触发您的处理器(这是一个闭包)。试图追溯你的过去是愚蠢的事
因此,在我看来,你有两种选择可以轻松做到这一点:
1) 只需在日志记录时声明文件和行,并将其作为上下文传递给日志编写器
:
Log::debug('My debug message', ['file' => __FILE__, 'line' => __LINE__]);
2) 您可能知道,Laravel日志中通常包含文件和行信息的原因与记录器本身无关,而是与PHP异常的内置\uuu toString
方法有关,该方法随堆栈跟踪一起输出。如果我们可以利用这一点来实现我们想要的呢
<?php
class DebugInfo extends \Exception
{
public function __toString()
{
return 'Debug info "'.$this->getMessage().'" on file '.$this->getFile().':'.$this->getLine();
}
}
您的日志如下所示:
app('log')->getMonolog()->pushProcessor(function ($record) {
if (array_get($record, 'level_name') === 'DEBUG') {
// ...
}
return $record;
});
[2016-09-09 09:21:29] local.DEBUG: Debug info "My debug message" on file .../app/Http/Controllers/PresentationController.php:15
作为补充说明,如果您希望为调试目的向自己发送消息,我建议尝试使用。由于您是手动记录数据的,我想您可以自己编写文件名和行吗?