【问题标题】:how to write info, errors, warnings, emergency errors to different files instead of laravel.log如何将信息、错误、警告、紧急错误写入不同的文件而不是 laravel.log
【发布时间】:2018-12-24 13:51:21
【问题描述】:

基本上,我现在在 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。

【问题讨论】:

    标签: laravel


    【解决方案1】:

    说明

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

    来自 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',
        ],
    ],
    

    根据我们的配置,syslog 通道会将消息写入系统日志;但是,由于错误消息不是关键或以上,它不会被发送到 Slack。但是,如果我们记录紧急消息,它将同时发送到系统日志和 Slack,因为紧急级别高于我们对两个通道的最低级别阈值

    解决方案 1

    解决您的问题的方法是编写配置多个日志记录通道并直接写入每个通道,如下所示:

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

    这样,日志消息将不会出现在通道中,而不是发送到的通道中。

    解决方案 2

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 1970-01-01
      • 2023-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2018-12-23
      • 2021-11-24
      相关资源
      最近更新 更多