如何过滤Ubuntu PHP日志
导读:Ubuntu PHP日志过滤实用指南 一 先定位日志文件 PHP-FPM 错误日志:常见路径为 /var/log/php-fpm/error.log,部分系统或版本可能位于 /var/log/php7.x-fpm.log(将 7.x 替换...
Ubuntu PHP日志过滤实用指南
一 先定位日志文件
- PHP-FPM 错误日志:常见路径为 /var/log/php-fpm/error.log,部分系统或版本可能位于 /var/log/php7.x-fpm.log(将 7.x 替换为你的实际版本,如 7.4、8.1、8.2)。
- PHP-FPM 访问日志:可能为 /var/log/php-fpm/access.log 或 /var/log/php-fpm/www.access.log。
- 若使用 Apache 模块方式运行 PHP,PHP 错误也可能写入 /var/log/apache2/error.log。
- 若使用 Nginx + PHP-FPM,应用级错误通常仍在 PHP-FPM 日志中,而 Nginx 错误日志为 /var/log/nginx/error.log(用于查看上游或网关层错误)。
以上路径会因安装方式与发行版存在差异,必要时请结合你的 PHP 与 Web 服务配置核对。
二 常用过滤命令
- 实时跟踪最新日志(类似 tail -f):
less +F /var/log/php-fpm/error.log - 按关键词过滤(不区分大小写):
grep -i "error" /var/log/php-fpm/error.log - 多关键字过滤(正则):
grep -E "error|warning|notice" /var/log/php-fpm/error.log - 排除某类信息:
grep -v "deprecated" /var/log/php-fpm/error.log - 统计出现频次:
grep -E "error|warning|notice" /var/log/php-fpm/error.log | sort | uniq -c | sort -nr - 查看上下文:
- 显示匹配行及后 5 行:
grep -A 5 "SQLSTATE\[42S22\]" /var/log/php-fpm/error.log - 显示匹配行及前 5 行:
grep -B 5 "SQLSTATE\[42S22\]" /var/log/php-fpm/error.log - 显示匹配行及前后各 5 行:
grep -C 5 "SQLSTATE\[42S22\]" /var/log/php-fpm/error.log
- 显示匹配行及后 5 行:
- 按时间窗口查看(假设日志含标准时间格式,如 2025-11-14):
- 今天:
grep "$(date +%Y-%m-%d)" /var/log/php-fpm/error.log - 昨天:
grep "$(date -d yesterday +%Y-%m-%d)" /var/log/php-fpm/error.log
- 今天:
- 仅输出匹配部分:
grep -o "SQLSTATE\[[^\]]*\]" /var/log/php-fpm/error.log - 按进程或池名过滤(若日志含 pool/pid):
grep "pool www" /var/log/php-fpm/error.log - 组合管道示例:统计 warning 以上级别按文件与行号分布
grep -n -E "error|warning" /var/log/php-fpm/error.log | sort | uniq -c | sort -nr | head
以上命令可组合使用,先定位文件,再用 grep/less/awk/sort/uniq 做精细化筛选与统计。
三 按时间范围与大小快速筛选
- 最近 N 分钟(如 30 分钟):
find /var/log/php-fpm/ -name "error.log" -mmin -30 -exec tail -n 200 { } \; - 最近 N 小时(如 6 小时):
find /var/log/php-fpm/ -name "error.log" -mmin -360 -exec tail -n 500 { } \; - 最近 N 天(如 7 天)并统计错误数:
find /var/log/php-fpm/ -name "error.log" -mtime -7 -exec grep -E "error|warning" { } \; | wc -l - 大文件快速定位:先用
wc -l看总行数,再用sed -n '10000,20000p' file查看指定区段,避免全量加载。
四 减少日志噪声与长期治理
- 调整 PHP 报告级别(在 php.ini 或 FPM pool 配置中):
- 示例:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED - 生产建议:
display_errors = Off,log_errors = On,并设定error_log到专用文件。
- 示例:
- 调整 FPM 日志级别(在 /etc/php/{
version}
/fpm/pool.d/www.conf 的
[www]段):- 将
log_level设为 warning 或 error 以减少日志量。
- 将
- 配置 logrotate 做按日轮转与压缩(示例):
/var/log/php-fpm/error.log { daily missingok rotate 7 compress delaycompress notifempty create 0644 root root } - 变更后重启生效:
- Apache:
sudo systemctl restart apache2 - PHP-FPM:
sudo systemctl restart php{ version} -fpm
以上做法可在不影响排障的前提下显著降低日志量并便于长期维护。
- Apache:
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何过滤Ubuntu PHP日志
本文地址: https://pptw.com/jishu/748048.html
