Laravel项目在Linux上如何进行日志管理
导读:Laravel 在 Linux 上的日志管理实践 一 基础配置与日志级别 日志默认目录为项目的 storage/logs,常见文件有 laravel.log 等。可在 .env 中设置通道与级别: 通道:LOG_CHANNEL=sing...
Laravel 在 Linux 上的日志管理实践
一 基础配置与日志级别
- 日志默认目录为项目的 storage/logs,常见文件有 laravel.log 等。可在 .env 中设置通道与级别:
- 通道:LOG_CHANNEL=single|daily|stack|syslog|errorlog
- 级别:LOG_LEVEL=debug|info|notice|warning|error|critical|alert|emergency
- 也可在代码中通过门面记录:
- \Log::info(‘上线完成’, [‘env’ => app()-> environment()]);
- \Log::error(‘支付失败’, [‘order_id’ => $id, ‘reason’ => $e-> getMessage()]);
- 级别从低到高依次为:debug < info < notice < warning < error < critical < alert < emergency,设置某一级后仅记录该级及以上。
二 按日期轮转与保留策略
- 方案 A Laravel 内置 daily 通道(应用内轮转)
- 配置示例(Laravel 5.6+ 推荐在 config/logging.php 的 channels 中使用 daily):
- ‘daily’ => [ ‘driver’ => ‘daily’, ‘path’ => storage_path(‘logs/laravel.log’), ‘level’ => env(‘LOG_LEVEL’, ‘debug’), ‘days’ => 14, ],
- 旧版本可在 config/app.php 使用:
- ‘log’ => ‘daily’, ‘log_max_files’ => 30,
- 说明:内置 daily 会在达到保留天数后自动清理,适合无需系统级工具的单体应用。
- 配置示例(Laravel 5.6+ 推荐在 config/logging.php 的 channels 中使用 daily):
- 方案 B 系统级 logrotate(推荐与内置策略二选一或叠加)
- 新建配置 /etc/logrotate.d/laravel:
- /path/to/your/laravel/storage/logs/*.log {
- daily
- missingok
- rotate 14
- compress
- notifempty
- create 0640 www-data adm
- }
- /path/to/your/laravel/storage/logs/*.log {
- 按需调整保留天数、压缩与权限;Debian/Ubuntu 上 logrotate 通常已预装,可手动触发测试:sudo logrotate -f /etc/logrotate.conf。
- 新建配置 /etc/logrotate.d/laravel:
三 权限与目录准备
- 确保运行用户(如 www-data 或 nginx)对日志目录具备写权限:
- sudo mkdir -p /var/www/your_project/storage/logs
- sudo chown -R www-data:www-data /var/www/your_project/storage/logs
- sudo chmod -R 755 /var/www/your_project/storage/logs
- 若使用外部日志目录,需在 config/logging.php 中同步修改 path。
四 日常查看与清理
- 实时查看与检索:
- 实时尾随:tail -f storage/logs/laravel.log
- 最新 N 行:tail -n 50 storage/logs/laravel.log
- 关键字过滤:grep -i “error” storage/logs/laravel.log | tail -n 20
- 清理策略(不建议手工 rm,优先用轮转/保留策略)
- 若需临时清理:find /path/to/your/laravel/storage/logs -type f -name “*.log” -mtime +14 -delete
- 更稳妥做法:通过 logrotate 的 rotate 与 compress 自动管理。
五 远程集中与告警
- 远程日志:
- 使用 syslog 通道将日志发往系统日志,再由 rsyslog/Logstash 集中;或在 stack 通道中组合多个通道(如 daily + syslog)。
- 第三方服务:
- 结合 Monolog 对接 Papertrail/Loggly 等,获得检索、可视化与告警能力,适合多实例与分布式部署。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Laravel项目在Linux上如何进行日志管理
本文地址: https://pptw.com/jishu/764115.html
