Laravel自定义日志写入详解

日志文件是每个项目中的必需品,极大的方便了我们记录和解决问题,但是在使用的过程中也会遇到一些麻烦,比如写日志的地方特别多,日志很乱,其实这些问题框架中都有对应的解决办法

首先我们需要知道几个文件

  1. /config/logging.php 这个文件是laravel 日志的配置文件,我们主要看 channels这个数组中的内容,内容太多,我保留了其中部分内容
'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'],
            'ignore_exceptions' => false,
        ],

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

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

可以看到,里面有很多的参数设置,那么这些参数都是什么意思呢? 这里我来具体分析一下

driver => 'stack'

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

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

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

'level' => 'debug',

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

这里我们以一个需求举例:我们需要为用户注册单独写一个日志文件,文件以日期划分

在这里我们需要注意到2个点。

  1. 单独建立日志文件
  2. 日志文件根据日期划分

需求明确以后,我们开始日志文件的创建

  1. 在/config/logging.php 的 channels 写入配置信息
'channels' => [
        'stack' => [
            'driver' => 'stack',
            'channels' => ['daily'],
            'ignore_exceptions' => false,
        ],

        'register' => [
            'driver' => 'driver',
            'path' => storage_path('logs/register.log'),
        ],

       .....
    ],

在写好配置文件后,我们需要在项目中去运用到

<?php
namespace App\Http\Controllers;

use Illuminate\Support\Facades\Log;

class register extends Controller
{
    public function addUser(){
        ....
        //channel:调用指定通道,info:写入普通信息
        Log::channel('register')->info('注册成功了');
    }
}

上面的代码将会在项目的 storage/logs下生成 register-2020-04-27.log文件
并在里面写入

[2020-04-27 09:12:48] local.INFO: 注册成功了  


版权声明:本文为qq_37167546原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。