我已经将laravel 5配置为使用自定义日志记录配置(默认配置太简单)。我添加了monog的IntrospectionProcessor来记录日志调用的文件名和行号。
问题是所有行都得到相同的文件和行号:

[2015-06-29 17:31:46] local.DEBUG (/home/vagrant/project/vendor/laravel/framework/src/Illuminate/Log/Writer.php#201): Loading view...  [192.168.10.1 - GET /loans/create]

有没有办法配置内省处理器来打印实际的行而不是外观行?
如果我这样做,它工作并打印正确的文件和行号…但我不知道避免调用Writer.writeLog function有多安全,因为它会触发一个日志事件(不触发该事件是否安全?).

最佳答案

这实际上是预期的功能,除非您让处理程序直接处理日志(查看introspectionprocessor.php顶部的注释)。我猜您在logger周围有一个包装器函数,您从writer.php调用它——但是
如果您查看introspectionprocessor.php的代码,您将在第81到87行看到一些决定如何格式化堆栈跟踪的代码,它仍然可以访问堆栈。如果将$trace[$i-1]/$trace[$i]的$i值向上增加一个(分别称为$trace[$i]/$trace[$i+1]),则可以将堆栈“爬升”回所需的位置。
需要注意的是,跟踪的“类”和“函数”部分必须比“文件”和“行”高一级堆栈。
在个人(请不要修改我的bruhs)注意,我想看到的功能,包括堆栈偏移时抛出登录。我知道当我写错误日志时,如果一个错误突然出现,我想责怪什么函数,但我可能(会)在“ut-oh”出现时忘记了这一点。

07-25 23:06
查看更多