Ubuntu PHP日志管理技巧
导读:Ubuntu PHP日志管理实用技巧 一 日志位置与快速查看 常见日志路径与用途如下(按组件区分): Apache:访问日志 /var/log/apache2/access.log;错误日志 /var/log/apache2/error...
Ubuntu PHP日志管理实用技巧
一 日志位置与快速查看
- 常见日志路径与用途如下(按组件区分):
- Apache:访问日志 /var/log/apache2/access.log;错误日志 /var/log/apache2/error.log(PHP 错误通常随 Apache 错误日志输出)。
- Nginx:访问日志 /var/log/nginx/access.log;错误日志 /var/log/nginx/error.log(FastCGI 错误、上游 PHP-FPM 异常常出现于此)。
- PHP-FPM:常见有 /var/log/php-fpm/error.log 与 /var/log/php-fpm/access.log;部分发行版或版本可能使用单一文件如 /var/log/php7.x-fpm.log,以实际配置为准。
- 快速查看命令示例:
- 实时查看:sudo tail -f /var/log/nginx/error.log
- 分页查看:less +F /var/log/php-fpm/error.log
- 若不确定日志路径,可在对应组件的配置中查找相关指令(如 Nginx 的 error_log、PHP-FPM pool 配置中的 access.log/error.log 与 pid 等)。
二 配置 PHP 错误日志与输出策略
- 编辑对应 SAPI 的 php.ini(如 /etc/php/{
version}
/{
apache2|fpm|cli}
/php.ini):
- 开启错误日志:log_errors = On
- 指定日志文件:error_log = /var/log/php_errors.log
- 调整报告级别(生产建议):error_reporting = E_ALL & ~E_NOTICE & ~E_WARNING & ~E_DEPRECATED
- 生产环境禁止显示错误到页面:display_errors = Off
- 变更后重启服务使生效(如 systemctl restart apache2 或 systemctl restart php{ version} -fpm)。
- 应用与框架日志建议统一到应用日志目录,避免与 PHP 或 Web 服务器日志混杂,便于独立轮转与权限控制。
三 使用 Monolog 进行结构化与应用级日志
- 安装:composer require monolog/monolog
- 基本用法(文件输出):
- 代码示例:
- use Monolog\Logger;
- use Monolog\Handler\StreamHandler;
- $log = new Logger(‘app’);
- $log-> pushHandler(new StreamHandler(‘/var/log/myapp.log’, Logger::WARNING));
- $log-> warning(‘Disk space low’);
- 代码示例:
- 按环境控制级别:开发环境 debug,生产环境 warning/error;可按需添加多处理器(如同时写文件与 syslog)。
四 日志轮转与保留策略
- 系统级轮转工具 logrotate 是控制日志体积的关键,Ubuntu 默认已集成,按日/周执行。
- PHP-FPM 日志轮转示例(/etc/logrotate.d/php-fpm):
- 配置要点:
- 路径:/var/log/php-fpm/*.log
- 策略:daily、rotate 7、compress、delaycompress、notifempty、create 640 www-data adm、sharedscripts
- 轮转后通知 PHP-FPM 重新打开日志:postrotate kill -USR2 $(cat /var/run/php-fpm.pid)
- 测试与生效:
- 语法/调试:sudo logrotate -d /etc/logrotate.d/php-fpm
- 强制执行:sudo logrotate -f /etc/logrotate.d/php-fpm
- 配置要点:
- 应用日志轮转建议:
- 使用 Monolog\Handler\RotatingFileHandler(‘/var/log/myapp.log’, 7) 实现按文件大小自动滚动(应用层与系统层双重保障)。
- 通用 PHP 错误日志轮转(/etc/logrotate.d/php-errors):
- 示例:
- /var/log/php_errors.log { daily; missingok; rotate 7; compress; notifempty; create 640 root adm } 。
- 示例:
五 定位日志膨胀与建立监控告警
- 快速定位来源:
- 检查 php.ini 的 error_log;核对 Nginx/Apache 的 access_log/error_log;在项目目录搜索 .log 文件(如 find . -name “*.log” | grep -i php)。
- 控制日志量:
- 降低 error_reporting 级别,关闭非关键 NOTICE/DEPRECATED;审查框架日志配置(如 Laravel 的 config/logging.php,将级别调至 warning/error)。
- 清理与监控:
- 定期清理旧归档(如 find /var/log -name “php_.log.” -mtime +30 -delete);对日志目录设置磁盘使用率监控与阈值告警(如 Prometheus + Node Exporter 或 Zabbix)。
- 安全与权限:
- 日志目录与文件仅对必要用户可读写(如 www-data 或 adm 组),避免泄露敏感信息;必要时将日志目录置于独立分区。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu PHP日志管理技巧
本文地址: https://pptw.com/jishu/775213.html
