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;
其他的就没什么了。
最后啰嗦一句,具体使用哪一个,还是要看自己的需求,官方给的那个玩意,我不太愿意用,也可能是我没有研究明白具体怎么配置,感觉使用起来不是那么灵活。
自定义的话,反正也是利用官方的插件,只是在实现的时候进行了自己的定义,我觉得没什么太大的问题。