ThinkPHP5.1 框架下自带日志功能详解及远程调试

本文详细介绍了ThinkPHP的日志配置方法,包括不同类型的驱动(如File和Socket)、日志级别设置,以及如何在不同模块间切换配置。同时涵盖了手动记录日志、使用SocketLog插件与服务器的配合,以及日志记录和写入的实战操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日志配置

    use think\facade\Log;

    Log::init([

        // 日志记录方式,支持 file socket 或者自定义驱动类
        'type'  =>  'File',

        //日志保存目录
        'path'  =>  "../logs/$dir/",

        //单个日志文件的大小限制,超过后会自动记录到第二个文件
        'file_size'     =>2097152,

        //日志的时间格式,与date函数设置一致,可以自定义时间格式,默认是` c `
        'time_format'   =>'YmdHis c',

        //是否用json格式写入到日志文件
        'json'  =>  false,

    ]);

日志的配置文件是配置文件目录下的log.php文件,如果需要针对不同的模块设置不同的日志类型,则需要在模块配置目录下的log.php中配置,系统在进行日志写入之前会读取该配置文件进行初始化。

日志配置参数根据不同的日志类型有所区别,内置的日志类型包括:file、socket,日志类型使用type参数配置即可。

日志驱动

    驱动通用

参数        描述
type        日志类型(或者驱动类名称)
level       允许记录的日志级别
allow_key   允许日志写入的授权key
close       是否关闭日志写入(V5.1.8+)

   File 驱动

参数        描述
file_size       日志文件大小限制(超出会生成多个文件)
path            日志存储路径
apart_level     独立记录的日志级别
time_format     时间记录格式,与date函数设置一致,如 'YmdHis c',可以自定义时间格式,默认是'c'
single          是否单一文件日志
max_files       最大日志文件数(超过自动清理 V5.1.6+)
json             是否用json格式写入到日志文件

   Socket 驱动

        Socket驱动 需要中间服务作为转发,大概的逻辑是通过向 localhost的某个端口(默认1116)进行 资源传输,然后通过 中间服务 发送给客户端

        本质上就是 CURL+WebSocket,TP框架的逻辑可以查看 Socket.php。这里推荐使用 socketlog,web开发的时候 可以配置 chrome的 socketlog插件 一起使用。

        tp-config

    Log::init([
        'type'  =>  'Socket'
    ]);

        SocketLog-client

            安装 chrome的 socketlog插件

            chrome浏览器 翻墙访问: https://chrome.google.com/webstore/detail/socketlog/apkmbfpihjhongonfcgdagliaglghcod 进行安装

            配置 socketlog插件,如图

                

        SocketLog-server

            a:

            Centos 7安装npm,运行以下命令(已安装的可跳过)

            运行命令:curl -sL https://rpm.nodesource.com/setup_13.x | bash -和yum install -y nodejs

            b:

            运行 npm install -g socketlog-server直接安装。

            运行 socketlog-server 启动服务。

            将会在本地起一个websocket服务 ,监听端口是1229 。

            socketlog-server服务器使用到1229和1116端口,若服务器开启了防火墙,需要开放这两个端口

        效果如下:

            server

            client


 

日志写入

版本新增功能
5.0.4命令行模式下日志自动定时写入
5.0.4debug日志类型仅用于调试模式记录

手动记录

一般情况下,系统的日志记录是自动的,无需手动记录,但是某些时候也需要手动记录日志信息,Log类提供了3个方法用于记录日志。

方法描述
Log::record()记录日志信息到内存
Log::save()把保存在内存中的日志信息(用指定的记录方式)写入
Log::write()实时写入一条日志信息

由于系统在请求结束后会自动调用Log::save方法,所以通常,你只需要调用Log::record记录日志信息即可。

record方法用法如下:

Log::record('测试日志信息');

默认的话记录的日志级别是INFO,也可以指定日志级别:

Log::record('测试日志信息,这是警告级别','notice');

采用record方法记录的日志信息不是实时保存的,如果需要实时记录的话,可以采用write方法,例如:

Log::write('测试日志信息,这是警告级别,并且实时写入','notice');

 日志级别

ThinkPHP对系统的日志按照级别来分类,并且这个日志级别完全可以自己定义,系统内部使用的级别包括:

  • log 常规日志,用于记录日志
  • error 错误,一般会导致程序的终止
  • notice 警告,程序可以运行但是还不够完美的错误
  • info 信息,程序输出信息
  • debug 调试,用于调试信息
  • sql SQL语句,用于SQL记录,只在数据库的调试模式开启时有效

系统提供了不同日志级别的快速记录方法,例如:

Log::error('错误信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('错误信息','error');
Log::record('日志信息','info');

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值