beter / yii2-beter-logging
为企业级yii2项目提供坚不可摧的日志记录:monolog 2.x集成,自定义LogTarget带有延迟队列,漂亮的控制台处理器,通过UDP和TCP的logstash与深入yii2集成。
Requires
- php: >=7.4
- beter/exception-with-context: ^1.0
- monolog/monolog: ^2
- psr/log: ^1
- yiisoft/yii2: ^2.0
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集成。
特性
- 底层使用monolog;
- 实现自定义日志目标将日志条目传递给monolog;
- 如果logstash处理器失败,允许处理器链,因此不会丢失日志条目;
- 允许跟踪日志处理器的统计信息;
- 为消息和异常添加日志上下文;
- 在错误情况下不会关闭整个日志目标;
- 如果处理器失败特定次数,允许关闭处理器;
- 支持带有颜色的stdout/stderr;
- 支持logstash TCP和UDP传输;
- 原生支持yii日志特性。
你需要尝试的相关包
- beter/exception-with-context用于
yii2-beter-logging
包,以支持异常中上下文数据的存储。 查看文档。 - yii2-log-request-response包包含组件,该组件在CLI脚本和WEB中记录用户信息、请求相关信息、头部、执行时间等。
安装
安装此扩展的首选方式是通过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,并通知您此设置。请参阅详细信息。logVars
、maskVars
和prefix
设置将被忽略并重置为空数组和null值。请参阅详细信息。
唯一的附加设置是targetLogComponent
部分。这不是yii2日志目标的标准设置。此部分是必需的,它将Beter\Yii2\Logging\ProxyLogTarget
与Beter\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\ProxyLogTarget
的 targetLogComponent
设置中指定的相同的组件名称和 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
进一步阅读
待定
- 处理器、格式化和处理器
- 延迟错误
- 扩展