最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

ThinkPHP6.0版本的日志变化

来源:懂视网 责编:小采 时间:2020-11-03 18:22:47
文档

ThinkPHP6.0版本的日志变化

ThinkPHP6.0版本的日志变化:6.0的日志类比之前版本完善了很多,主要新特性包括: ·日志信息格式化 ·多通道写入支持 ·延时/实时写入 ·日志信息处理事件 ·日志级别指定通道写入 ·支持关闭日志/通道新版的日志类最大的变化就是支持多通道写入,也就是说你可以同时或者给部分日志类型
推荐度:
导读ThinkPHP6.0版本的日志变化:6.0的日志类比之前版本完善了很多,主要新特性包括: ·日志信息格式化 ·多通道写入支持 ·延时/实时写入 ·日志信息处理事件 ·日志级别指定通道写入 ·支持关闭日志/通道新版的日志类最大的变化就是支持多通道写入,也就是说你可以同时或者给部分日志类型

默认通道

通过设置default参数定义日志的默认通道,例如:

'default'=>'file',

级别通道

可以设置不同的日志级别使用不同的日志通道。

'type_channel'=>[
// 对于error日志级别 同时写入file和email两个日志通道
'error'=>['file','email'],
]

设置了级别通道后,该级别的日志不会记录到默认通道,请注意。

日志通道需要日志驱动的配合,你也可以自定义日志驱动。

切换通道

你也可以手动切换当前的日志的默认写入通道,例如:

Log::channel('email')->info('这是日志信息');

支持切换使用多个通道记录,例如:

Log::channel(['email', 'file'])->info('这是日志信息');

日志处理

日志写入支持事件监听,例如:

Event::listen('thinkeventLogWrite', function($event) {
 if('file' == $event->channel) {
 $event->log['info'][] = 'test info';
 }
});

闭包的参数是LogWrite事件类对象实例,你可以获取两个属性:

1576473997540347.png

日志信息是一个二维数组,包含了当前日志通道下(允许记录的)所有级别的日志信息。

格式化日志信息

系统提供了两个参数用于日志信息的格式化,第一个是用于自定义时间显示格式的time_format,第二个是调整日志输出格式的format参数。

'channels' => [
 'file' => [
 'type' => 'file', 
 'json' =>true
 'file_size' => 1024*1024*10, 
 'time_format' => 'Y-m-d H:i:s',
 'format' => '[%s][%s]:%s',
 ],
],

format参数的第一个%s是日志记录时间(日志时间的格式化由time_format参数定义) 第二个%s是日志级别 第三个%s是日志信息,顺序不能调整。

JSON格式日志

可以支持JSON格式记录文件日志,更加方便一些第三方日志分析工具进行日志分析。

在日志配置文件中,添加

return [
 'default' => 'file',
 'channels' => [
 'file' => [
 'type' => 'file', 
 'json' =>true
 'file_size' => 1024*1024*10, 
 ],
 ],
];

即可开启JSON格式记录,CLI命令行的日志记录同样有效。

和之前版本的区别在于,新版的每个日志信息都是一条JSON数据(旧版本是每个请求一条JSON数据)。

关闭日志

你可以通过调用close方法动态关闭日志写入。

// 关闭全局日志写入
Log::close();
// 关闭某个通道日志写入
Log::close('file');

如果调用close方法动态关闭日志,会自动调用clear方法清空日志。

清空日志

一旦执行save方法后,内存中的日志信息就会被自动清空,如果需要提前清空日志可以使用:

// 清空所有日志
Log::clear();
//清空通道日志可以使用
Log::clear('file');

在清空日志方法之前,你可以使用getLog方法获取内存中的日志。

// 获取(默认通道)日志
$logs = Log::getLog();
// 获取指定通道日志
$logs = Log::getLog('file');

日志清空仅仅是清空内存中的日志。

自定义驱动

日志通道需要自定义日志驱动,该日志驱动需要实现thinkcontractLogHandlerInterface接口。

interface LogHandlerInterface
{
 /**
 * 日志写入接口
 * @access public
 * @param array $log 日志信息
 * @return bool
 */
 public function save(array $log): bool;
}

众多ThinkPHP教程,尽在PHP中文网,欢迎在线学习!

本文转自:https://blog.thinkphp.cn/1186947

文档

ThinkPHP6.0版本的日志变化

ThinkPHP6.0版本的日志变化:6.0的日志类比之前版本完善了很多,主要新特性包括: ·日志信息格式化 ·多通道写入支持 ·延时/实时写入 ·日志信息处理事件 ·日志级别指定通道写入 ·支持关闭日志/通道新版的日志类最大的变化就是支持多通道写入,也就是说你可以同时或者给部分日志类型
推荐度:
标签: 版本 日志 6.0
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top