基于日期的拉拉维尔日志文件

2022-08-30 17:19:22

默认情况下,laravel 将日志文件保存到一个名为 laravel 的日志文件中.log位于/storage/logs/laravel.log

我的问题是我如何每天获取新的日志文件并存储当前日期的日志文件,所以我每天都需要一个新的日志文件保存到/storage/logs/laravel-2016-02-23.log/storage/logs/

我认为我们可以通过扩展默认的bootstraper类来做到这一点,但我不确定我该怎么做Illuminate\Foundation\Bootstrap\ConfigureLogging

如果有人能帮助我,我将不胜感激。

提前致谢。


答案 1

在我使用的Laravel 5.6版本中,用于日志记录的配置文件是config/logging.php

在那里,您将找到以下部分

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['single'],
    ],

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

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

更改行

'channels' => ['single'],

'channels' => ['daily'],

然后它会像这样:

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
    ],

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

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

它将在日志目录中以laravel-2018-08-13.log格式为每天创建日志文件。日志目录将像这样

以前 enter image description here

应用轮换配置后,目录具有为当前日期创建的日志文件(如为今天创建的圈形文件 2018-08-13)。enter image description here


答案 2

实际上,它比这简单得多。在您的队伍中,您会看到以下行:config/app.php

'log' => 'single',

更接近文件的底部。默认情况下,Laravel 使用该方法,该方法将所有错误存储在单个扩展文件中。如果将此行更改为:single

'log' => 'daily',

它会告诉Laravel,您希望拥有多个日志,每个日志都以错误发生的日期为后缀。

还有其他一些可用的方法,因此请务必查看官方文档以获取更多信息。


这个答案是针对Laravel 5.2的,这是原始问题中指定的版本。在 Never 版本的 Laravel 中,日志记录配置已移至其自己的配置文件中,如 @ShanthaKumara 的答案(https://stackoverflow.com/a/51816907/3965631)所示。请不要建议编辑以更改此答案以反映新版本。


推荐