搜索
首页php框架ThinkPHPThinkPHP6.0版本的日志变化

ThinkPHP6.0版本的日志变化

6.0的日志类比之前版本完善了很多,主要新特性包括:

    ·日志信息格式化

    ·多通道写入支持

    ·延时/实时写入

    ·日志信息处理事件

    ·日志级别指定通道写入

    ·支持关闭日志/通道

新版的日志类最大的变化就是支持多通道写入,也就是说你可以同时或者给部分日志类型增加另外的日志通道写入,例如对于一些异常日志可以选择发送错误到邮件通知。

其它的变化主要包括:

    ·WEB日志和CLI日志合并并统一格式;

    ·默认不再记录访问信息,需要可以自己记录;

    ·独立日志也支持JSON格式记录;

日志的相关配置可以在config/log.php文件中设置,本篇主要描述下新版日志的变化。

日志通道

日志通道的概念相当于给日志信息做了一个日志空间,每个日志通道的日志信息采用独立的写入机制或者配置参数,你可以给日志信息指定默认的日志通道,也可以动态切换通道写入,并且支持同一个日志信息同时写入多个日志通道。

你可以在日志配置文件的channels配置中定义通道,默认仅定义了一个file通道。

// 日志通道列表
'channels'     => [
    'file' => [
        // 日志记录方式
        'type'           => 'File',
        // 日志保存目录
        'path'           => '',
        // 单文件日志写入
        'single'         => false,
        // 独立日志级别
        'apart_level'    => [],
        // 最大日志文件数量
        'max_files'      => 0,
        // 使用JSON格式记录
        'json'           => false,
        // 日志输出格式化
        'format'         => '[%s][%s] %s',
        // 是否实时写入
        'realtime_write' => false,
    ],
    // 其它日志通道配置
],

每个日志通道必须指定type参数,该参数决定了日志的写入方式是什么,file就表示文件日志方式写入,如果需要指定其它的写入方式需要安装额外的扩展。但你也可以给不同的日志通道指定相同的type,只是其它的配置参数不同,例如写入的路径不同之类。

无论使用什么日志写入类型,每个日志通道可以支持的通用配置如下:

1576474151410342.png

level参数的用法和全局日志配置一致,除了在命令行模式下,默认的日志都是在请求结束后统一一次性写入,如果需要实时写入日志信息需要设置。

'realtime_write'=>true,

如果在命令行下,无论是否设置都会自动实时写入日志。

默认通道

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

'default'=>'file',

级别通道

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

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

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

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

切换通道

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

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

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

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

日志处理

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

Event::listen('think\event\LogWrite', 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');

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

自定义驱动

日志通道需要自定义日志驱动,该日志驱动需要实现think\contract\LogHandlerInterface接口。

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

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

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

以上是ThinkPHP6.0版本的日志变化的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文转载于:ThinkPHP官网。如有侵权,请联系admin@php.cn删除
win10的事件ID 6013是什么?win10的事件ID 6013是什么?Jan 09, 2024 am 10:09 AM

win10的日志可以帮助用户详细的了解系统使用情况,很多的用户在寻找自己的管理日志的时候,肯定都遇到过日志6013吧,那么这个代码的意思是什么呢,下面就来介绍一下。win10日志6013是什么:1、这个是正常的日志。这个日志的信息并不是表示你的计算机重启了,而是说明自从上次启动以来,系统运行了多长的时间了。该日志会每天12点整出现一次。如何查看系统运行多长时间了,可以在cmd中输入systeminfo。其中有一行就是。

日志记录器缓冲区大小日志有什么用日志记录器缓冲区大小日志有什么用Mar 13, 2023 pm 04:27 PM

作用是:给工程师们反馈使用信息与记录便于分析问题(开发时使用的);由于用户本身不是经常产生上传日志,所以对用户无用。日志记录缓冲区是小型的、用于短期存储将写入到磁盘上的重做日志的变更向量的临时区域。日志缓冲区对磁盘的一次写入是来自多个事务的一批变更向量。即使如此,日志缓冲区中的变更向量也是接近实时地写入磁盘,当会话发出COMMIT语句时,会实时执行日志缓冲区写操作。

解决Win10中的事件7034错误日志问题解决Win10中的事件7034错误日志问题Jan 11, 2024 pm 02:06 PM

win10的日志可以帮助用户详细的了解系统使用情况,很多的用户在寻找自己的管理日志的时候,肯定都看到过很多的错误日志吧,那么该怎么解决他们呢,下面就一起来看看吧。win10日志事件7034怎么解决:1、点击“开始”打开“控制面板”2、找到“管理工具”3、点击“服务”4、找到HDZBCommServiceForV2.0右击“停止服务”,并改为“手动启动”

如何在ThinkPHP6中使用日志如何在ThinkPHP6中使用日志Jun 20, 2023 am 08:37 AM

随着互联网和Web应用的迅猛发展,日志管理越来越重要。在开发Web应用时,如何查找和定位问题是一个非常关键的问题。日志系统是一种非常有效的工具,可以帮助我们实现这些任务。ThinkPHP6提供了一个强大的日志系统,可以帮助应用程序开发人员更好地管理和跟踪应用程序中发生的事件。本文将介绍如何在ThinkPHP6中使用日志系统,以及如何利用日志系统

如何在iPhone上的健康应用程序中查看您的用药日志历史记录如何在iPhone上的健康应用程序中查看您的用药日志历史记录Nov 29, 2023 pm 08:46 PM

iPhone可让您在“健康”App中添加药物,以便跟踪和管理您每天服用的药物、维生素和补充剂。然后,您可以在设备上收到通知时记录已服用或跳过的药物。记录用药后,您可以查看您服用或跳过用药的频率,以帮助您跟踪自己的健康状况。在这篇文章中,我们将指导您在iPhone上的健康应用程序中查看所选药物的日志历史记录。如何在“健康”App中查看用药日志历史记录简短指南:前往“健康”App>浏览“>用药”>用药“>选择一种用药>”选项“&a

了解win10日志中事件ID455的含义了解win10日志中事件ID455的含义Jan 12, 2024 pm 09:45 PM

win10的日志有着很多丰富的内容,很多的用户在寻找自己的管理日志的时候,肯定都见到过事件ID455显示错误,那么它到底是什么意思呢,下面就一起来看看。win10日志中事件ID455是什么:1、ID455是信息存储打开日志文件时<文件>发生的错误<错误>

linux查看日志的三种命令linux查看日志的三种命令Jan 04, 2023 pm 02:00 PM

linux查看日志的三种命令分别是:1、tail命令,该命令可以实时查看文件内容的变以及日志文件;2、multitail命令,该命令可以同时监视多个日志文件;3、less命令,该命令可以快速查看日志的更改,并且不会使屏幕混乱。

利用Java的日志框架监控系统运行情况利用Java的日志框架监控系统运行情况Nov 06, 2023 am 11:41 AM

在Java应用程序开发中,监控系统的运行情况是非常重要的。通过日志框架记录关键信息、异常和性能指标,可以及时捕获问题,进行故障排除,并优化系统性能。下面将介绍如何利用Java的日志框架监控系统运行情况,并提供一些实践技巧和经验。一、选择适合的日志框架1、常见日志框架:常见的Java日志框架包括Log4j、Logback和java.util.logging等。2、特点比较:不同的日志框架具有不同的特点。例如,Log4j具有灵活的配置和丰富的输出格式,Logback是Log4j的继任者并采用了更先进

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具