gpt4 book ai didi

laravel - 如何将信息、错误、警告、紧急错误写入不同的文件而不是 laravel.log

转载 作者:行者123 更新时间:2023-12-02 04:26:35 27 4
gpt4 key购买 nike

基本上,我现在在 logging.php 中有这个

 'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14,
],

但这会做的是每次我写任何类型的错误(紧急、调试、信息或其他)时,所有错误都将写入此文件中。

我需要的是将不同类型的错误类型拆分为不同类型的文件,而且所有这些都必须每天使用。这将是我需要的最终结构。

\storage
\logs
\info
laravel-24-04-18.log
laravel-25-04-18.log
\error
laravel-24-04-18.log
laravel-25-04-18.log

\emergency
laravel-24-04-18.log
laravel-25-04-18.log

我搜索太多了。我找到了很多解决方案,但从那以后 laravel 发生了很大变化,以至于没有任何解决方案对我有用。我正在使用 5.7 laravel。

最佳答案

解释

通过阅读您的问题,我认为您需要为每个要写入的单独日志文件使用不同的日志记录 channel 。唯一的问题是您只能在配置日志 channel 时指定最低日志级别。在您的情况下,它被设置为 debug 意味着任何具有调试级别或更高级别的内容都将被发送到 channel 。

来自 laravel 文档的示例:

'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['syslog', 'slack'],
],

'syslog' => [
'driver' => 'syslog',
'level' => 'debug',
],

'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => 'critical',
],
],

Given our configuration, the syslog channel will write the message to the system log; however, since the error message is not critical or above, it will not be sent to Slack. However, if we log an emergency message, it will be sent to both the system log and Slack since the emergency level is above our minimum level threshold for both channels

解决方案1

您的问题的解决方案是编写配置多个日志记录 channel 并像这样直接写入每个记录 channel :

Log::channel('slack')->info('Something happened!');

这样一来,日志消息就不会在 channel 中结束,除了它发送到的 channel 。

解决方案2

或者,您可以向每个 channel 添加一个 FilterHandler,这将允许您指定最小和最大日志级别。

可以在此处找到有关配置 channel 处理程序的更多信息:https://laravel.com/docs/5.8/logging#creating-monolog-handler-channels .

有关设置 FilterHandler 的信息可在此处找到:https://stackoverflow.com/a/52310813/7528944

关于laravel - 如何将信息、错误、警告、紧急错误写入不同的文件而不是 laravel.log,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914306/

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