Laravel基于日期的日志文件

时间:2016-02-23 20:12:23

标签: php laravel logging laravel-5.2

默认情况下,laravel将日志文件保存到位于/storage/logs/laravel-2016-02-23.log

中的名为laravel.log的单个日志文件中

我的问题是如何每天获取一个新的日志文件并将/storage/logs/之类的日志文件存储到当前日期,因此我每天都需要将新的日志文件保存到Illuminate\Foundation\Bootstrap\ConfigureLogging

我认为我们可以通过扩展默认的{{1}} bootstraper类来做到这一点,但我不知道我该怎么做

如果有人能帮助我,我将非常感激。

提前致谢。

5 个答案:

答案 0 :(得分:11)

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

'log' => 'single',

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

'log' => 'daily',

它会告诉Laravel你更喜欢有多个日志,每个日志都以错误发生的日期为后缀。

还有其他一些方法,所以请务必查看official documentation以获取更多信息。

答案 1 :(得分:7)

在我使用的 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 :(得分:2)

只需打开.env文件并更改

LOG_CHANNEL=stack

LOG_CHANNEL=daily

然后运行命令

php artisan config:cache

现在我认为您的问题会解决。

答案 3 :(得分:1)

laravel 的每日日志没问题,但是在第一年,您将拥有 365 个 django_ace 文件。我的方法是在 laravel.log 频道的 'path' 上执行以下操作。

'single'

通过这种方式,您可以按年/月/日组织日志。

  • 2021/
    • 06/
      • 01/
        • laravel.log

答案 4 :(得分:0)

您还可以按年/月文件夹划分每日日志(对于Laravel> = 5.6)

<?php
    // ./config/logging.php
   return [
    /*
    |    ./storage/logs/
    |
    |    ├── 2018
    |    │   └── 12
    |    │       ├── laravel-2018-12-30.log
    |    │       └── laravel-2018-12-31.log
    |    └── 2019
    |        ├── 01
    |        │   ├── laravel-2019-01-01.log
    |        │   ├── laravel-2019-01-02.log
    |
    |        .....
    |
    |        │   └── laravel-2019-01-31.log
    |
    */
    'default' => env('LOG_CHANNEL', 'stack'),
    'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'], // set 'daily' channel
        ],
        'daily' => [
            'driver' => 'daily',
            // add dynamic folder structure
            'path' => storage_path('logs/' . date('Y/m/') . 'laravel.log'),
            'level' => 'debug',
            // set the maximum number of days in a month
            'days' => 31,
        ],
    ],
];

完整示例-https://gist.github.com/andriichuk/893be964de09a96d90d33b56c9b32333