如何在 Laravel 中创建自定义日志文件?

Laravel 默认提供 storage/logs/laravel.log 文件用来纪录项目日志。但有时您可能需要为特定任务创建日志文件。例如,如果您正在处理一项付款任务,并且您需要将付款相关的日志单独记录于一个付款日志文件,那么您可以如此做:

在这里,我将举一个非常简单的示例,让我们看看如何添加定义了新的日志文件的 channels 。

在“channels”数组中添加新的键“raviyatechnical”。

配置文件

在日志配置文件 config/logging.php 中添加新的 channel ,定义日志存储文件位置、驱动、和存储日志级别

...
'channels' => [
    ...
    'raviyatechnical' => [
        'driver' => 'single', # "single", "daily", "slack", "syslog", "errorlog", "monolog", "custom", "stack"
        'path' => storage_path('logs/raviyatechnical.log'),
        'level' => 'info', # 日志被写入的最低级别
    ],
....

上述配置参数说明

driver => 'single'

这个配置的意思是:使用 single 通道来驱动日志文件的操作,laravel提供了8个不同的通道,这里我只讲其中常用的3个

名称 描述
stack 一个便于创建『多通道』通道的包装器
single 单个文件或者基于日志通道的路径 (StreamHandler)
daily 一个每天轮换的基于 Monolog 驱动的 RotatingFileHandler
'path' => storage_path('logs/raviyatechnical.log'),

这个配置的意思是:日志存放路径,这里的路径为storage/logs/raviyatechnical.log

'level' => 'debug',

这个配置指的是日志被写入的最低级别,只有在使用了syslog 和 slack驱动下才会用到这个配置,该配置下有emergency、alert、 critical、 error、 warning、 notice、 info 和 debug。 这几个级别

调用记录日志方法

use Illuminate\Support\Facades\Log;

# 指定 channel 
Log::channel('raviyatechnical')->info('This is testing for raviyatechnical.com!');

dd('done');

此时,你可以在日志文件 storage/logs/raviyatechnical.log 中看到一条新的记录

[2021-04-13 11:46:41] local.INFO: This is testing for raviyatechnical.com!