本文目录导读:

在Laravel中配置日志通道非常灵活,可以通过配置文件轻松管理,以下是详细的配置方法:
基础配置
配置文件位置
主要配置文件位于 config/logging.php
默认配置示例
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single'],
'ignore_exceptions' => false,
],
'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,
],
'slack' => [
'driver' => 'slack',
'url' => env('LOG_SLACK_WEBHOOK_URL'),
'username' => 'Laravel Log',
'emoji' => ':boom:',
'level' => env('LOG_LEVEL', 'critical'),
],
'stderr' => [
'driver' => 'monolog',
'level' => env('LOG_LEVEL', 'debug'),
'handler' => StreamHandler::class,
'with' => [
'stream' => 'php://stderr',
],
],
'syslog' => [
'driver' => 'syslog',
'level' => env('LOG_LEVEL', 'debug'),
],
'errorlog' => [
'driver' => 'errorlog',
'level' => env('LOG_LEVEL', 'debug'),
],
],
常用日志通道配置
单文件日志
'single' => [
'driver' => 'single',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
],
每日日志(推荐)
'daily' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'debug',
'days' => 14, // 保留14天
],
多通道堆栈
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'slack'],
'ignore_exceptions' => false,
],
高级配置示例
按模块分离日志
'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,
],
],
使用自定义处理器
'custom' => [
'driver' => 'monolog',
'level' => 'debug',
'handler' => \Monolog\Handler\RotatingFileHandler::class,
'handler_with' => [
'filename' => storage_path('logs/custom.log'),
'maxFiles' => 30,
],
],
数据库日志
'database' => [
'driver' => 'custom',
'via' => \App\Logging\DatabaseLogger::class,
],
// app/Logging/DatabaseLogger.php
namespace App\Logging;
use Monolog\Logger;
class DatabaseLogger
{
public function __invoke(array $config)
{
return new Logger('database', [
new \Monolog\Handler\DBHandler(),
]);
}
}
环境配置
在 .env 文件中设置:
# 设置默认日志通道 LOG_CHANNEL=daily # 设置日志级别 LOG_LEVEL=debug # Slack Webhook (如果使用) LOG_SLACK_WEBHOOK_URL=https://hooks.slack.com/services/xxx
使用日志
use Illuminate\Support\Facades\Log;
// 基础用法
Log::info('用户登录成功');
Log::warning('异常请求');
Log::error('支付失败', ['order_id' => 123]);
// 使用特定通道
Log::channel('orders')->info('新订单创建', ['order_id' => 123]);
Log::stack(['orders', 'daily'])->info('订单记录', ['data' => $data]);
// 使用辅助函数
logger('测试日志');
日志级别说明
- emergency: 系统不可用
- alert: 必须立即采取行动
- critical: 紧急情况
- error: 运行时错误
- warning: 警告但不致命
- notice: 正常但重要的事件
- info: 常规日志
- debug: 调试信息
生产环境最佳实践
// config/logging.php
'channels' => [
'production' => [
'driver' => 'daily',
'path' => storage_path('logs/laravel.log'),
'level' => 'warning', // 生产环境只记录警告以上
'days' => 30,
'tap' => [\App\Logging\CustomizeFormatter::class],
],
'audit' => [
'driver' => 'daily',
'path' => storage_path('logs/audit.log'),
'level' => 'info',
'days' => 90,
'formatter' => \Monolog\Formatter\JsonFormatter::class,
],
],
通过合理配置日志通道,可以更好地管理和追踪应用运行状态,建议在开发环境使用debug级别,生产环境使用warning或error级别的日志记录。