Laravel框架的日志使用的是日志插件Monolog,这个应该是目前比较好用的日志插件之一了。

官方给了一些配置日志的选项。说实话,可能是功力尚浅,没看懂。

这就尴尬了。后百度了一下,大概明白了日志的一些大概的情况。

一:配置官方日志插件

1:配置logging.php

文件位置:./config/logging.php

在数组中添加一下配置

'daily' => [
            // 日志驱动
            'driver' => 'daily',
            // 日志存放位置
            'path' => storage_path('logs/laravel.log'),
            // 日志记录登记
            'level' => 'debug',
            // 日志存放天数
            'days' => 7,
            // 日志存放内容格式
            'formatter'=>JsonFormatter::class
        ],

增加使用命名空间:

use Monolog\Handler\JsonFormatter;

使用log需要添加命名空间

// 使用日志类
use Illuminate\Support\Facades\Log;

调用这里有两种情况:

1:在./.env文件中增加如下配置:

LOG_CHANNEL=daily         #设置日志驱动

调用:

// ==========================================================
        // 调用日志
        $array['dsfghj'] = 'aesdrfjk';
        $array['dasf'] = 'dzs';
        $array['xzcv'] = 'sdgfhj';
        Log::info('json', $array);

2:不配置./.env 中的参数的情况下调用

Log::channel('daily')->info('json', $array);

二:使用官方日志插件,自定义日志方法

我这里自定义的日志方法使用的也是Monolog日志插件

我这里定义了一个控制器,哪里需要使用,哪里实例化调用就可以了。

<?php
  
namespace App\Http\Controllers\Common;
  
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Storage;
use App\Http\Controllers\Controller;
use App\Http\Controllers\Common\CommonController;
use Monolog\Logger;
use Monolog\Handler\StreamHandler;
  
class LogController extends CommonController
{
    public function addLog($json)
    {
        // =========================================================
        // 更改时区(不更改时区,默认与北京时间有8个小时的时差)
        date_default_timezone_set('Asia/Shanghai');
        // 日志文件名称
        $filename = date('Y-m-d', time()) . '.log';
        // 日志存放路径
        $path = LOG_PATH . $filename;
        // 文件是否存在
        if (!file_exists($path)) 
        {
            fopen($path, "w");
        }
        // 实例化日志类(此处日志抬头信息,可自定义,便于快速找出你需要的日志)
        $view_log = new Logger('Region Logs');
        // 写入
        $view_log->pushHandler(new StreamHandler($path, Logger::INFO));
        $view_log->info($json);
    }
}

注意命名空间中的引用

use Monolog\Logger;
use Monolog\Handler\StreamHandler;

其他的就没什么了。

最后啰嗦一句,具体使用哪一个,还是要看自己的需求,官方给的那个玩意,我不太愿意用,也可能是我没有研究明白具体怎么配置,感觉使用起来不是那么灵活。

自定义的话,反正也是利用官方的插件,只是在实现的时候进行了自己的定义,我觉得没什么太大的问题。