日志配置
位置是:config\log.php
<?php
return [
// 日志记录方式,内置 file socket 支持扩展
'type' => 'File',
// 日志保存目录
'path' => '',
// 日志记录级别
'level' => [],
// 单文件日志写入
'single' => false,
// 独立日志级别
'apart_level' => [],
// 最大日志文件数量
'max_files' => 0,
// 是否关闭日志写入
'close' => false,
];
可以为每个模块单独配置日志类型,需要在模块的配置目录下 log.php 中配置,一般不需要去改动
日志写入
手动记录
一般情况下,系统的日志记录是自动的,无需手动记录,但是某些时候也需要手动记录日志信息,Log类提供了3个方法用于记录日志。
方法 | 描述 |
---|---|
record() | 记录日志信息到内存 |
save() | 把保存在内存中的日志信息(用指定的记录方式)写入,并清空内存中的日志 |
write() | 实时写入一条日志信息,会触发save操作 |
V5.1.15+
版本开始,write
方法不会触发save
操作
由于系统在请求结束后会自动调用Log::save
方法,所以通常,你只需要调用Log::record
记录日志信息即可。
例子:
<?php
namespace app\test2\controller;
use think\Controller;
use think\facade\Log;
class Demo2 extends Controller
{
// 测试记录日志
public function fun1()
{
Log::write('测试日志');
}
}
然后使用 postman 发送这个请求,再去查看记录的日志:默认情况下日志被记录在 runtime/log/ 文件夹下,按照日期会被自动管理。
默认的日志级别是 [info],我也可以手动设置.
<?php
// 可以设置日志的级别
public function fun2()
{
Log::write('测试日志信息,这是警告级别,并且实时写入','notice');
}
日志级别
日志的级别从低到高依次为:
- debug:调试级别
- info:默认级别
- notice:提醒级别
- warning:警告级别
- error:错误级别
- critical:临界的批评的关键的危急的
- alert:
- emergency:紧急情况
- sql日志级别仅用于记录SQL日志(并且仅当开启数据库调试模式有效)。
系统提供了不同日志级别的快速记录方法,例如:
<?php
Log::error('错误信息');
Log::info('日志信息');
// 和下面的用法等效
Log::record('错误信息','error');
Log::record('日志信息','info');
还封装了一个助手函数用于日志记录,例如:
<?php
trace('错误信息','error');
trace('日志信息','info');
事实上,你可以增加自定义的日志类型,例如:
<?php
Log::record('自定义错误信息','diy');
trace('自定义错误信息','diy');
也支持指定级别日志的输入,需要配置信息:
<?php
return [
'type' => 'File',
// 日志记录级别,使用数组表示
'level' => ['error','alert'],
],
上面的配置表示只记录error
和alert
级别的日志信息。
默认情况下是不会记录HTTP异常日志(避免受一些攻击的影响写入大量日志),除非你接管了系统的异常处理,重写了report方法。