ThinkPHP在CentOS上的日志管理主要涉及配置、查看、清理及高级操作,具体如下:
修改配置文件
在config/log.php
中设置日志参数,如存储路径、级别、通道等:
return [
'default' => 'file', // 默认通道
'channels' => [
'file' => [
'type' => 'file',
'path' => runtime_path('logs'), // 日志目录(默认runtime/log)
'level' => ['info', 'error'], // 记录级别
'max_files' => 30, // 保留天数/文件数
],
'db' => [ // 数据库日志(需提前创建表)
'type' => 'database',
'table' => 'system_logs',
'connection' => 'log_db',
],
],
];
支持file
(文件)、database
(数据库)、custom
(自定义)等驱动。
动态切换通道
代码中可通过Log::channel('通道名')
指定日志存储位置,如:
Log::channel('db')->error('数据库异常', ['sql' => $sql]);
命令行查看
tail -f runtime/logs/2025-09-11.log # 按日期分割的日志文件
journalctl
查看系统日志(需配置rsyslog转发):journalctl -u nginx -f # 查看Nginx相关日志
日志文件管理
runtime/logs
目录下过期文件。logrotate
工具配置定期切割(如按天/大小分割):# 示例:/etc/logrotate.d/thinkphp
/path/to/runtime/logs/*.log {
daily
rotate 30
compress
missingok
create 0640 www-data adm
}
日志分级存储
将不同级别日志分离存储,例如:
'channels' => [
'error_file' => [
'type' => 'file',
'path' => runtime_path('logs/error'),
'level' => ['error', 'critical'],
'apart_level' => true, // 每个级别单独文件
],
'info_file' => [
'type' => 'file',
'path' => runtime_path('logs/info'),
'level' => ['info', 'debug'],
],
],
集成ELK等分析工具
'json_log' => [
'type' => 'file',
'path' => runtime_path('logs/json'),
'json' => true,
'level' => ['info', 'error'],
],
rsyslog
或Filebeat
将日志实时传输至远程服务器。权限与安全
runtime/logs
目录权限为640
,避免敏感信息泄露:chmod 640 runtime/logs/*
chown -R www-data:adm runtime/logs # 根据实际用户调整