1. 日志文件位置管理
Laravel在Linux系统中的日志默认存储于项目目录的storage/logs文件夹内(如laravel.log或按日期分割的日志文件)。通过SSH连接到服务器后,可使用cd /path/to/project/storage/logs命令进入该目录,配合ls命令查看日志文件列表。
2. 日志级别精准控制
Laravel支持emergency(紧急)、alert(警报)、critical(严重)、error(错误)、warning(警告)、notice(通知)、info(信息)、debug(调试)八大日志级别。通过修改项目根目录下.env文件中的LOG_LEVEL变量,可过滤无需记录的日志——例如设置为LOG_LEVEL=error时,仅记录error及以上级别的日志(如系统崩溃、数据库连接失败),减少无关日志的存储量。
3. 日志轮转自动化配置
为避免日志文件无限膨胀占用磁盘空间,推荐使用Linux自带的logrotate工具实现自动轮转。创建/etc/logrotate.d/laravel配置文件,添加以下内容:
/path/to/your/laravel/storage/logs/*.log {
daily # 每天轮转一次
missingok # 若日志文件不存在也不报错
rotate 14 # 保留最近14天的日志
compress # 压缩旧日志(节省空间)
notifempty # 若日志为空则不轮转
create 640 www-data adm # 创建新日志文件并设置权限(根据实际用户/组调整)
}
该配置可自动管理日志生命周期,无需手动干预。
4. Laravel内置日志门面使用
通过Log门面可便捷地在代码中记录不同级别的日志,便于追踪业务流程或排查问题。常用方法包括:
Log::info('User logged in', ['id' => $user->id]);(记录用户登录信息)Log::error('Database connection failed', ['exception' => $e]);(记录数据库连接错误及异常详情)Log::warning('Low disk space', ['free_space' => $freeSpace]);(记录磁盘空间不足警告)daily或single)的日志文件中。5. 日志文件权限优化
确保storage/logs目录及其中的日志文件具有正确的读写权限,避免因权限问题导致Laravel无法写入日志。通常执行以下命令即可:
chmod -R 755 storage/logs # 设置目录权限为755(所有者可读写执行,其他用户可读执行)
chown -R www-data:adm storage/logs # 根据实际运行Laravel的用户/组调整(如www-data为Apache/Nginx用户,adm为系统日志组)
若权限设置不当,可能出现“Permission denied”错误,导致日志无法记录。
6. 第三方日志工具集成
对于需要集中管理、实时监控或高级分析的场景,可集成第三方日志工具。常见选择包括:
config/logging.php扩展(如添加slack通道发送日志到Slack群组);7. 定期清理旧日志
即使配置了日志轮转,仍需定期清理过期的日志文件以释放磁盘空间。两种常用方法:
crontab -e,添加以下任务(每天凌晨1点清理14天前的日志):0 1 * * * find /path/to/your/laravel/storage/logs -type f -name "*.log" -mtime +14 -exec rm -f {} \;
php artisan log:clear命令可快速清除所有旧日志(仅保留最新的single通道日志,若使用daily通道则需配合轮转配置)。8. 日志监控与实时跟踪
为及时发现应用程序异常(如500错误、数据库超时),可使用以下命令实时监控日志文件的变化:
tail -f /path/to/your/laravel/storage/logs/laravel.log
该命令会持续输出日志文件的最新内容,便于快速响应问题。若需同时监控多个日志文件,可使用tail -f file1.log file2.log。