beter/yii2-beter-logging

为企业级yii2项目提供坚不可摧的日志记录:monolog 2.x集成,自定义LogTarget带有延迟队列,漂亮的控制台处理器,通过UDP和TCP的logstash与深入yii2集成。

安装: 4,200

依赖项: 1

建议者: 0

安全: 0

星标: 6

关注者: 2

分支: 1

开放问题: 1

类型:yii2-extension

2.0.2 2023-01-20 10:28 UTC

This package is not auto-updated.

Last update: 2024-09-16 16:54:17 UTC


README

为企业的yii2项目提供坚不可摧的日志记录。

monolog 2.x集成,自定义LogTarget带有延迟队列,漂亮的控制台处理器,通过UDP和TCP的logstash与深入yii2集成。

CLI colors

特性

  • 底层使用monolog;
  • 实现自定义日志目标将日志条目传递给monolog;
  • 如果logstash处理器失败,允许处理器链,因此不会丢失日志条目;
  • 允许跟踪日志处理器的统计信息;
  • 为消息和异常添加日志上下文
  • 在错误情况下不会关闭整个日志目标;
  • 如果处理器失败特定次数,允许关闭处理器;
  • 支持带有颜色的stdout/stderr;
  • 支持logstash TCP和UDP传输;
  • 原生支持yii日志特性。

你需要尝试的相关包

安装

安装此扩展的首选方式是通过composer

运行以下命令之一:

composer require beter/yii2-beter-logging

或添加

"beter/yii2-beter-logging": "~1.0.0" // add the latest version

到你的composer.json的require部分。

配置

要使用此扩展,您必须将其配置在您的应用程序配置中。

配置Yii2日志组件

Beter\Yii2\Logging\ProxyLogTarget类添加到您的日志目标列表中

'log' => [
    'traceLevel' => YII_DEBUG ? 3 : 0,
    'flushInterval' => 1,
    'targets' => [
        // other log targets

        'monolog-proxy' => [
            'class' => Beter\Yii2\Logging\ProxyLogTarget::class,
            'targetLogComponent' => [
                'componentName' => 'monolog',
                'logChannel' => 'main'
            ],
            'exportInterval' => 1,
            'categories' => [],
            'except' => [
                'yii\web\UrlManager::parseRequest',
                'yii\web\UrlRule::parseRequest',
            ],
            'levels' => ['error', 'warning', 'info', 'trace'],
        ],

        // other log targets
    ],
]

ProxyLogTarget扩展自yii\log\Target,并支持yii\log\Target具有的所有设置,但有限制

  • exportInterval必须为1。yii2-beter-logging始终将此设置重置为1,并通知您此设置。请参阅详细信息
  • logVarsmaskVarsprefix设置将被忽略并重置为空数组和null值。请参阅详细信息

唯一的附加设置是targetLogComponent部分。这不是yii2日志目标的标准设置。此部分是必需的,它将Beter\Yii2\Logging\ProxyLogTargetBeter\Yii2\Logging\MonologComponent连接。

Beter\Yii2\Logging\MonologComponent可以配置为几个monolog通道,但ProxyLogTarget需要指定一个。

如果您需要更多的monolog通道,您可以设置几个ProxyLogTarget

请查看文档的更多部分以获取详细信息。

配置MonologComponent

日志目标将日志条目传递给 Beter\Yii2\Logging\MonologComponent,然后 Beter\Yii2\Logging\MonologComponent 将其传递给 Monolog\Logger

Beter\Yii2\Logging\MonologComponent 配置了与 yii2-beter-logging 一起提供的自定义处理器。

支持的处理器列表

  • logstash
  • standard_stream
  • firephp

因此,配置 Beter\Yii2\Logging\MonologComponent 类。不要忘记使用与 Beter\Yii2\Logging\ProxyLogTargettargetLogComponent 设置中指定的相同的组件名称和 monolog 通道名称(在这个例子中是 "monolog""main")。

'monolog' => [
    'class' => Beter\Yii2\Logging\MonologComponent::class,
    'channels' => [
        'main' => [
            'handler' => [
                [
                    'name' => 'logstash',
                    'label' => 'logstash',
                    'level' => 'debug',
                    'bubble' => true,
                    'host' => '1.2.3.4', // or host.address.com
                    'port' => 5045,
                    'socket_transport' => 'tcp',
                    'persistent' => false,
                    'socket_timeout' => 1,
                    'writing_timeout' => 1,
                    'connection_timeout' => 1,
                    'max_handle_errors_before_disabling' => 3,
                    'formatter' => [
                        'name' => 'logstash',
                        'trace_depth' => 10,
                    ]
                ],
                [
                    'name' => 'standard_stream',
                    'stream' => 'php://stderr',
                    'level' => 'debug',
                    'bubble' => true,
                    'formatter' => [
                        'name' => 'console',
                        'colorize' => true,
                        'indentSize' => 2,
                        'trace_depth' => 10,
                    ]
                ],
                [
                    'name' => 'firephp',
                    'bubble' => false,
                    'formatter' => [
                        'name' => 'wildfire',
                    ]
                ],
            ],
            'processor' => [
                [
                    'name' => 'basic_processor',
                    'env' => YII_ENV, // dev, prod, etc
                    'app' => 'myapp',
                    'service' => 'api',
                    'exec_type' => 'web', // or cli, or etc
                    'host' => gethostname(), // or set it as you want
                ],
                [
                    'name' => 'correlation_id_processor',
                    'length' => 32,
                    'search_in_headers' => true, // true if not set explicitly
                    'header_name' => 'X-Request-Id', // 'X-Request-Id' if not set explicitly
                ],
            ],
        ],
    ],
],

配置引导顺序

为了不丢失任何日志条目,您需要在任何其他组件之前 引导 Beter\Yii2\Logging\MonologComponent。列表中的 log 组件必须是第二个组件。

// other settings

'bootstrap' => [
    'monolog',
    'log',
    'authManager',
    // other components
],

// other settings

其他配置

不要忘记配置所有环境,如 cli 等。

使用方法

只需像往常一样使用 log 组件和与 Yii::log() 相关的方法即可。

Yii::error('Error here', 'application'); // application is a category name
or
Yii::info('Info here', __METHOD__); // if you call from method

进一步阅读

待定

  • 处理器、格式化和处理器
  • 延迟错误
  • 扩展