Laravel默认将日志文件存储在项目根目录的storage/logs文件夹中(如laravel.log或按日期分割的文件,如laravel-2025-09-23.log)。通过SSH连接到服务器后,可使用cd /path/to/your/laravel-project/storage/logs进入该目录,用ls -l查看日志文件列表。
Laravel支持8种日志级别(从低到高依次为debug、info、notice、warning、error、critical、alert、emergency),可根据需求调整记录的日志详细程度:
.env文件,设置LOG_LEVEL参数(如LOG_LEVEL=error仅记录错误及以上级别日志);config/logging.php文件,修改default字段或对应通道的level选项(如将daily通道的level设为warning)。为避免日志文件无限膨胀占用磁盘空间,推荐使用Linux系统自带的logrotate工具实现自动轮转:
/etc/logrotate.d/目录下新建laravel文件,添加以下内容(需替换/path/to/your/laravel为实际项目路径):/path/to/your/laravel/storage/logs/*.log {
daily # 每天轮转一次
missingok # 若日志文件不存在也不报错
rotate 14 # 保留最近14天的日志
compress # 压缩旧日志(节省空间)
notifempty # 若日志为空则不轮转
create 640 www-data adm # 创建新日志文件并设置权限(根据实际Web用户调整,如www-data、nginx等)
}
sudo logrotate -vf /etc/logrotate.d/laravel验证配置是否生效。通过Laravel提供的Log门面,可在代码中便捷记录不同级别的日志,便于后续排查问题。常用方法如下:
use Illuminate\Support\Facades\Log;
// 记录信息日志(用于调试常规流程)
Log::info('用户登录成功', ['user_id' => 1, 'ip' => request()->ip()]);
// 记录错误日志(用于捕获异常)
try {
// 业务逻辑
} catch (\Exception $e) {
Log::error('订单创建失败', ['exception' => $e, 'order_data' => $orderData]);
}
// 记录警告日志(用于提示潜在问题)
Log::warning('库存不足', ['product_id' => 101, 'stock' => 5]);
日志会自动写入当前配置的通道(如daily或single)。
若需更灵活的日志管理(如将日志写入不同文件、数据库或远程服务),可在config/logging.php中自定义通道。例如,添加一个orders通道用于记录订单相关日志:
'channels' => [
'orders' => [
'driver' => 'daily', // 按天轮转
'path' => storage_path('logs/orders.log'), // 日志文件路径
'level' => 'info', // 记录info及以上级别日志
'days' => 30, // 保留30天日志
],
],
使用时通过指定通道记录日志:Log::channel('orders')->info('订单支付成功', ['order_id' => 202])。
确保storage/logs目录及日志文件具有正确的权限,避免因权限问题导致日志无法写入:
chmod -R 755 storage/logs(使所有者可读写执行,其他用户可读执行);chmod 640 storage/logs/*.log(使所有者可读写,所属组可读,其他用户无权限);www-data,可执行chown -R www-data:www-data storage/logs(将目录及文件所有者设为www-data)。tail命令实时查看日志文件的最新内容(如tail -f storage/logs/laravel.log),便于快速定位线上问题;php artisan log:clear清除所有旧日志文件(仅保留最新日志,具体取决于config/logging.php中的days配置);0 0 * * * find /path/to/your/laravel/storage/logs -type f -name "*.log" -mtime +7 -exec rm {} \;
```。
对于需要集中管理、实时监控或高级分析的场景,可集成第三方日志工具,提升管理效率:
config/logging.php中添加对应通道(如Papertrail的syslog通道),并配置API密钥和端点。