ubuntu下thinkphp日志管理有哪些方法
导读:Ubuntu下ThinkPHP日志管理的主要方法 1. 日志配置管理 ThinkPHP的日志配置主要通过config/log.php文件(TP6+)或config/app.php(TP5)完成,核心参数包括: 默认通道:default指定...
Ubuntu下ThinkPHP日志管理的主要方法
1. 日志配置管理
ThinkPHP的日志配置主要通过config/log.php
文件(TP6+)或config/app.php
(TP5)完成,核心参数包括:
- 默认通道:
default
指定默认日志驱动(如file
、database
、email
等); - 通道设置:
channels
定义各通道的具体参数,如file
通道的path
(日志路径,默认runtime/log
)、level
(记录级别,如['error', 'warning']
)、max_files
(最大文件数,避免磁盘占满)、json
(是否输出JSON格式); - 日志级别:遵循PSR-3规范,从低到高为
debug
→info
→notice
→warning
→error
→critical
→alert
→emergency
,可通过level
过滤低级别日志。
2. 日志记录方式
- 静态调用:使用
think\facade\Log
类快速记录日志,支持链式调用,例如:use think\facade\Log; Log::info('用户登录成功', ['user_id' => 1]); // 记录info级别日志,带上下文 Log::error('数据库连接失败', ['error' => 'Connection refused']); // 记录error级别日志
- 动态方法:通过
Log
类的静态方法直接记录,如Log::write('手动记录日志', 'debug')
(实时写入)、Log::record('缓存数据', 'notice')
(先存内存,后续统一写入)。
3. 日志查看方法
- 直接查看文件:默认日志存储在
runtime/log/
目录下,按日期分割(如2025-09-29.log
),可使用cat
、less
、tail
等命令查看:tail -f runtime/log/2025-09-29.log # 实时监控最新日志 less runtime/log/error.log # 查看错误日志
- 命令行工具:使用ThinkPHP提供的
php think log
命令,可查看所有日志文件内容或指定级别日志:php think log # 查看所有日志 php think log --level=error # 仅查看error级别日志
4. 日志清理方法
- 手动清理:直接删除
runtime/log/
目录下的旧日志文件,或使用truncate
命令清空文件内容(避免删除文件导致权限问题):rm -rf runtime/log/*.log # 删除所有日志文件 truncate -s 0 runtime/log/*.log # 清空所有日志文件内容
- 定时任务(Cron):编写Shell脚本定期删除旧日志,例如删除7天前的
.log
文件,然后添加到Cron:# 创建脚本/usr/local/bin/clear_thinkphp_log echo '#!/bin/bash\nfind /path/to/project/runtime/log -mtime +7 -name "*.log" -exec rm -rf { } \; ' > /usr/local/bin/clear_thinkphp_log chmod +x /usr/local/bin/clear_thinkphp_log # 添加Cron任务(每天凌晨2点执行) echo '0 2 * * * /usr/local/bin/clear_thinkphp_log' | sudo tee -a /etc/crontab
- Logrotate工具:通过Ubuntu自带的
logrotate
实现日志轮转(压缩、删除旧日志),步骤如下:- 创建配置文件
/etc/logrotate.d/thinkphp
:/path/to/project/runtime/log/*.log { daily # 每天轮转 rotate 7 # 保留7天 missingok # 文件不存在不报错 notifempty # 空文件不轮转 compress # 压缩旧日志(gzip) delaycompress # 延迟压缩(避免当天日志未写完) sharedscripts # 所有日志处理完再执行脚本 postrotate # 轮转后执行的命令(如重启服务) /bin/kill -USR1 $(cat /var/run/php/php8.1-fpm.pid) 2> /dev/null || true endscript }
- 测试配置:
sudo logrotate -d /etc/logrotate.d/thinkphp
(模拟运行,查看是否有错误); - 强制轮转:
sudo logrotate -f /etc/logrotate.d/thinkphp
(立即执行)。
- 创建配置文件
5. 高级管理方法
- 自定义日志通道:除
file
通道外,可配置其他驱动,如:- 数据库通道:将日志存储到数据库,便于检索和分析:
使用时通过// config/log.php 'channels' => [ 'db' => [ 'type' => 'database', 'table' => 'logs', // 数据库表名 'connection' => 'mysql', // 数据库连接配置(需提前配置) ], ];
Log::channel('db')-> info('订单创建成功', ['order_id' => 1001])
写入。 - 邮件通道:发送错误日志到管理员邮箱(需配置SMTP):
配置后,'channels' => [ 'email' => [ 'type' => 'email', 'receivers' => ['admin@example.com'], // 接收人 'subject' => '系统错误报警', // 邮件主题 ], ];
error
级别日志会自动发送邮件。
- 数据库通道:将日志存储到数据库,便于检索和分析:
- 实时监控:使用
tail -f
命令实时查看日志变化,或结合grep
过滤关键信息:tail -f runtime/log/2025-09-29.log | grep 'error' # 只看error日志
- 性能优化:高频日志(如接口调用日志)建议开启批量写入(
Log::batch(true)
),减少IO操作;敏感信息(如密码、手机号)需过滤后再记录。
以上方法覆盖了Ubuntu下ThinkPHP日志的配置、记录、查看、清理及高级管理需求,可根据项目规模和实际场景选择合适的方式。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu下thinkphp日志管理有哪些方法
本文地址: https://pptw.com/jishu/719956.html