ThinkPHP的日志配置主要通过配置文件实现,默认路径为application/config.php(或config/log.php,取决于版本)。关键配置项包括:
DEBUG(调试)、INFO(信息)、WARN(警告)、ERROR(错误)、FATAL(致命)等,可根据环境调整(如生产环境建议设为ERROR,开发环境设为DEBUG)。runtime/log/目录下,可通过path参数自定义(如/var/log/thinkphp/),需确保应用对该目录有写入权限。file(文件)驱动,也支持database(数据库)、syslog(系统日志)等,可根据需求扩展。max_files(最大文件数,如20)、max_size(单个文件最大大小,如1024KB)、max_days(保留天数,如7)等参数控制日志文件数量和生命周期,避免单个文件过大。runtime/log/目录,使用tail、less、grep等工具查看日志。例如:
tail -n 10 runtime/log/error.logtail -f runtime/log/error.loggrep "数据库连接失败" runtime/log/*.logphp think log查看所有日志文件内容,支持过滤(如php think log --level=error仅查看错误日志)。runtime/log/目录下不需要的日志文件(如rm -rf runtime/log/*.log),适用于临时清理。cron定时任务自动清理过期日志。例如,每天凌晨2点删除7天前的日志,可编辑crontab(crontab -e)添加以下内容:0 2 * * * find /path/to/project/runtime/log/ -type f -mtime +7 -exec rm -f {} \;
logrotate工具实现自动轮转、压缩和删除。创建/etc/logrotate.d/thinkphp配置文件,内容示例如下:/path/to/project/runtime/log/*.log {
daily # 每天轮转
rotate 30 # 保留30个轮转文件
compress # 压缩旧日志(如.gz格式)
delaycompress # 延迟压缩(避免当天日志被压缩)
missingok # 日志文件不存在时不报错
notifempty # 日志为空时不轮转
create 640 www-data adm # 新日志文件权限(www-data为Web用户,adm为日志组)
}
保存后,logrotate会自动每天运行(通过/etc/cron.daily/logrotate触发)。rsyslog或syslog-ng将ThinkPHP日志发送到远程日志服务器,实现集中管理。例如,在ThinkPHP配置中设置type => 'syslog',并配置rsyslog接收日志(编辑/etc/rsyslog.conf添加local6.* /var/log/thinkphp.log,重启rsyslog服务)。runtime/log/目录权限正确,推荐设置为755(属主为Web用户,如www-data,属组为adm),避免未授权访问。runtime/log/systemSql.log中。生产环境中建议关闭SQL日志(在配置文件中设置'log' => ['level' => ['error', 'info']]),仅在调试时开启。通过以上步骤,可实现Debian系统中ThinkPHP日志的有效管理,确保日志的可用性、安全性和可维护性。