debian

Debian服务器上ThinkPHP日志管理

小樊
37
2025-11-03 04:24:36
栏目: 云计算

ThinkPHP日志管理指南(Debian服务器版)

一、日志配置

ThinkPHP的日志配置主要通过配置文件实现,支持动态调整日志行为。

二、日志查看

1. 直接查看日志文件

ThinkPHP的日志默认存储在runtime/log/目录下,文件名格式为日期_日志类型.log(如20251103_systemErr.log)。可通过以下命令查看:

# 查看最新日志(按时间排序)
tail -f /path/to/project/runtime/log/20251103.log

# 查看特定类型日志(如错误日志)
cat /path/to/project/runtime/log/systemErr.log

2. 使用ThinkPHP命令行工具

通过php think log命令快速检索日志内容,支持按级别、关键词过滤:

# 查看所有日志
php think log:list

# 查看ERROR级别日志
php think log:read --level=error

# 搜索包含"SQL"关键词的日志
php think log:search "SQL"

三、日志清理

1. 手动清理

直接删除runtime/log/目录下不需要的日志文件(如旧日志):

# 删除7天前的日志文件
find /path/to/project/runtime/log/ -type f -name "*.log" -mtime +7 -exec rm -f {} \;

# 删除所有ERROR级别日志
rm -f /path/to/project/runtime/log/systemErr.log

2. 定时清理(推荐)

通过cron定时任务自动清理过期日志,避免磁盘空间占用。

四、日志轮转(防止日志过大)

日志轮转可将单个日志文件分割为多个小文件,保留指定数量的历史日志。

1. 使用Logrotate工具(推荐)

Logrotate是Linux系统自带的日志轮转工具,需创建自定义配置文件:

2. 自定义Shell脚本

若不想使用Logrotate,可编写Shell脚本实现轮转:

五、权限管理

确保runtime/log/目录可写,避免日志无法记录:

# 设置目录权限(755:所有者可读写执行,其他用户可读执行)
chmod 755 /path/to/project/runtime/log/

# 设置目录所属用户组(如Web服务器用户为www-data)
chown -R www-data:www-data /path/to/project/runtime/log/

六、高级技巧

1. 动态记录日志

通过Log门面手动记录不同级别的日志,便于调试和跟踪:

use think\facade\Log;

// 记录INFO级别日志(带上下文数据)
Log::info('用户登录成功', ['user_id' => 123, 'ip' => '192.168.1.1']);

// 记录ERROR级别日志(带异常信息)
try {
    // 业务代码
} catch (\Exception $e) {
    Log::error('订单创建失败', ['exception' => $e->getMessage()]);
}

2. 关闭SQL日志(生产环境)

生产环境中无需记录所有SQL语句,可通过配置关闭:

// 关闭SQL日志
'log' => [
    'type' => 'File',
    'path' => runtime_path() . 'log',
    'level' => ['error'], // 不包含SQL日志
],
// 或单独关闭SQL日志
'sql' => [
    'type' => 'File',
    'level' => [], // 不记录SQL日志
],

0
看了该问题的人还看了