本文目录导读:

在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级别的日志记录。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播