PHP项目Laravel日志按日切割怎样配

wen PHP项目 4

本文目录导读:

PHP项目Laravel日志按日切割怎样配

  1. 方法一:使用 .env 文件配置(最简单)
  2. 方法二:在 config/logging.php 中配置
  3. 完整配置示例
  4. 自定义每日日志文件名
  5. 使用多日志环境的配置
  6. 注意事项
  7. 验证配置

在 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('支付信息日志');

注意事项

  1. 权限问题:确保 storage/logs 目录有写入权限
  2. 日志轮转:Laravel 自动处理每日切换,无需额外 cron 任务
  3. 清理机制:超过 days 配置的日志会自动删除
  4. 容器环境:如果使用 Docker,需要注意日志文件挂载问题

验证配置

# 清除配置缓存
php artisan config:clear
# 测试日志
php artisan tinker
>>> Log::info('测试日志');

这样配置后,日志将按天生成,文件名格式为 laravel-2024-01-15.log 这样的格式。

抱歉,评论功能暂时关闭!