segaja / monolog-creator
这些类提供了创建预配置的 monolog 记录器对象的简单工厂。
2.0.1
2023-01-20 14:51 UTC
Requires
- php: >=8.1
- monolog/monolog: 3.*
Requires (Dev)
- phpunit/phpunit: 9.*
- predis/predis: 2.*
- squizlabs/php_codesniffer: 3.*
README
这些类提供了创建预配置的 monolog 记录器对象的简单工厂。
Monolog-Creator 目前只支持几个 monolog 的处理器、格式化和处理器。因此,请随意扩展库。
查看 变更日志 以了解主版本之间的更新。
安装
composer require segaja/monolog-creator
示例
最小化
您必须至少配置 _default
记录器和处理程序。
index.php
<?php
require 'vendor/autoload.php';
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
],
];
$loggerFactory = new \MonologCreator\Factory($config);
$logger = $loggerFactory->createLogger('name');
$logger->addWarning('I am a warning');
?>
不同的记录器
您还可以创建不同的预配置记录器。例如,使用另一个日志级别或处理程序。
index.php
<?php
require 'vendor/autoload.php';
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
"test" => [
"handler" => ["stream"],
"level" => "DEBUG",
],
],
];
$loggerFactory = new \MonologCreator\Factory($config);
$logger = $loggerFactory->createLogger('test');
$logger->addDebug('I am a debug message');
?>
不同的格式化程序
您可以使用格式化程序配置日志输出。请注意,格式化程序在 formatter
键下有一个通用配置,并且必须将其分配到 handler
部分中的特定处理程序。
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
"formatter" => "json",
],
],
'formatter' => [
'json' => [],
],
"logger" => [
"_default" => [
"handler" => ["stream"],
"level" => "WARNING",
],
"test" => [
"handler" => ["stream"],
"level" => "DEBUG",
],
],
];
可选的处理程序
您可以选择添加处理程序到您的记录器
$config = [
"logger" => [
"test" => [
"handler" => ["stream"],
"processors" : ["web"],
"level" => "DEBUG",
],
],
];
支持的处理程序
StreamHandler
$config = [
"handler" => [
"stream" => [
"path" => "php://stdout",
],
],
];
UdpHandler(自定义处理程序)
$config = [
"handler" => [
'udp' => [
'host' => 'localhost',
'port' => '9999',
],
],
];
RedisHandler(使用 predis/predis)
要使用 Redis 处理程序,您必须自己创建 Predis 客户端对象并将其设置到工厂中,然后再创建任何记录器。
$config = [
"handler" => [
'redis' => [
"key" => "php_logs",
]
],
];
$predisClient = new \Predis\Client('tcp://192.168.42.43:6379');
$loggerFactory->setPredisClient($predisClient);
支持格式化程序
JsonFormatter
目前此处不支持任何选项。
$config = [
'formatter' => [
'json' => [],
],
];
LineFormatter
所有值都是可选的。布尔值 includeStacktraces
、allowInlineLineBreaks
和 ignoreEmptyContextAndExtra
可以是 "true"
或 "false"
。
$config = [
'formatter' => [
'line' => [
"format" => "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n",
"dateFormat" => "Y-m-d H:i:s",
"includeStacktraces" => "true",
"allowInlineLineBreaks" => "true",
"ignoreEmptyContextAndExtra" => "true",
],
],
];
LogstashFormatter
$config = [
'formatter' => [
'logstash' => [
"type" => "test-app"
],
],
];
支持的处理器
WebProcessors
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["web"],
'level' => 'DEBUG',
],
]
];
RequestID 处理器
为每个请求注入一个随机 UUID,使来自同一请求的多个日志消息更容易跟踪。
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["requestId"],
'level' => 'DEBUG',
],
]
];
ExtraFieldProcessor
允许您在 context
列表之外添加高级或特定字段到日志数据。这些附加字段将出现在输出的 extra
列表中。
$config = [
'logger' => [
'_default' => [
'handler' => [
'stream',
],
"processors" => ["extraFields"],
"extraFields" : [
"extra_key1" : "extra_value1",
"extra_key2" : "extra_value2"
],
'level' => 'DEBUG',
],
]
];