🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
日志记录由 `\think\Log`类完成。 ## 日志初始化 在使用日志记录之前,首先需要初始化日志类,指定当前使用的日志记录方式。 ~~~ \think\Log::init(['type'=>'File','path'=>APP_PATH.'logs/']); ~~~ 上面在日志初始化的时候,指定了文件方式记录日志,并且日志保存目录为`APP_PATH.'logs/'`。 > 不同的日志类型可能会使用不同的初始化参数。 ## 日志级别 ThinkPHP对系统的日志按照级别来分类,并且这个日志级别完全可以自己定义,系统内部使用的级别包括: * **log** 常规日志,用于记录日志 * **error** 错误,一般会导致程序的终止 * **notice** 警告,程序可以运行但是还不够完美的错误 * **info** 信息,程序输出信息 * **debug** 调试,用于调试信息 * **sql** SQL语句,用于SQL记录,只在数据库的调试模式开启时有效 ## 记录方式 日志的记录方式默认是文件方式,可以通过驱动的方式来扩展支持更多的记录方式。 记录方式由`log.type`参数配置,例如: ~~~ 'log' => [ 'type' => 'File', 'path' => LOG_PATH, ], ~~~ > File方式记录,对应的驱动文件位于系统的`library/think/log/driver/File.php`。 ## 手动记录 一般情况下,系统的日志记录是自动的,无需手动记录,但是某些时候也需要手动记录日志信息,Log类提供了3个方法用于记录日志。 | 方法 | 描述 | | --- | --- | | Log::record() | 记录日志信息到内存 | | Log::save() | 把保存在内存中的日志信息(用指定的记录方式)写入 | | Log::write() | 实时写入一条日志信息 | 由于系统在请求结束后会自动调用Log::save方法,所以通常,你只需要调用Log::record记录日志信息即可。 record方法用法如下: ~~~ \think\Log::record('测试日志信息'); ~~~ 默认的话记录的日志级别是INFO,也可以指定日志级别: ~~~ \think\Log::record('测试日志信息,这是警告级别','notice'); ~~~ 采用record方法记录的日志信息不是实时保存的,如果需要实时记录的话,可以采用write方法,例如: ~~~ \think\Log::write('测试日志信息,这是警告级别,并且实时写入','notice'); ~~~ ## 日志写入 日志可以通过驱动支持不同的方式写入,默认日志会记录到文件中,系统已经支持的写入方式包括 `File/Sae/Socket`,如果要使用Socket方式写入,可以设置: ~~~ 'log' => [ 'type' => 'socket', 'host' => 'slog.thinkphp.cn', //日志强制记录到配置的client_id 'force_client_ids' => [], //限制允许读取日志的client_id 'allow_client_ids' => [], ], ~~~ Socket驱动采用了SocketLog类库,更多的关于SocketLog的资料请参考调试章节。 ## 异常通知 当发生异常的情况下,可以设置是否发送通知,要启用该功能,首先需要设置通知参数,在应用的公共文件添加如下代码: ~~~ // 设置异常通知方式 采用邮件发送 \think\Log::alarm(['type'=>'email','address'=>'thinkphp@q.com']); ~~~ 可以通过添加驱动支持其他的通知方式。