本文目录导读:

在 Laravel 中配置日志按日切割,可以通过以下两种方式实现:
使用 .env 文件配置(最简单)
在 .env 文件中修改:
LOG_CHANNEL=daily
在 config/logging.php 中配置
查看当前配置
// config/logging.php
return [
'default' => env('LOG_CHANNEL', 'stack'),
'channels' => [
// 默认的单一日志文件
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
],
// 按日切割的通道
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14, // 保留天数
],
],
];
设置为默认通道
'default' => env('LOG_CHANNEL', 'daily'), // 改为 daily
完整配置示例
// config/logging.php
return [
'default' => env('LOG_CHANNEL', 'daily'),
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'slack'],
'ignore_exceptions' => false,
],
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14, // 日志保留天数,过期自动清理
'permission' => 0644, // 可选:文件权限
],
'emergency' => [
'path' => storage_path('logs/laravel.log'),
],
],
];
自定义每日日志文件名
如果你需要自定义日志文件名格式:
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel-' . date('Y-m-d') . '.log'),
'level' => env('LOG_LEVEL', 'debug'),
'days' => 14,
],
使用多日志环境的配置
如果不同的模块需要不同的日志:
'channels' => [
'orders' => [
'driver' => 'daily',
'path' => storage_path('logs/orders.log'),
'level' => 'info',
'days' => 30,
],
'payments' => [
'driver' => 'daily',
'path' => storage_path('logs/payments.log'),
'level' => 'info',
'days' => 30,
],
],
使用方式:
Log::channel('orders')->info('订单操作日志');
Log::channel('payments')->info('支付信息日志');
注意事项
- 权限问题:确保
storage/logs目录有写入权限 - 日志轮转:Laravel 自动处理每日切换,无需额外 cron 任务
- 清理机制:超过
days配置的日志会自动删除 - 容器环境:如果使用 Docker,需要注意日志文件挂载问题
验证配置
# 清除配置缓存
php artisan config:clear
# 测试日志
php artisan tinker
>>> Log::info('测试日志');
这样配置后,日志将按天生成,文件名格式为 laravel-2024-01-15.log 这样的格式。