忽略 yaml 级别的独白处理程序
Monolog handler ignoring yaml level
在使用 Monolog 的 Symfony 4.3 中,我创建了一个自定义处理程序来将日志推送到 AWS Firehose。这是构造函数:
class FirehoseLogHandler extends AbstractProcessingHandler {
public function __construct(
FirehoseClient $firehoseClient,
FormatterInterface $formatter,
$streamName,
$level = Logger::INFO,
$bubble = true
) {
$this->firehoseClient = $firehoseClient;
$this->streamName = $streamName;
$this->formatter = $formatter;
parent::__construct($level, $bubble);
}
这是我的 monolog.yaml
配置:
monolog:
handlers:
firehose_handler:
type: service
id: kinesis_stream_handler
main:
type: stream
handler: firehose_handler
level: error
channels: ["!event"]
services:
kinesis_stream_handler:
class: App\Logger\Handler\FirehoseLogHandler
arguments:
$firehoseClient: '@aws.firehose'
$formatter: '@App\Logger\Formatter\FirehoseLogFormatter'
$streamName: 'firehose-stream-test'
我遇到的问题是 $level
总是设置为 Logger::INFO
(200),或者在构造函数中设置的任何值。它似乎忽略了 yaml 配置中设置的内容。
我在这里做错了什么?我知道我总是可以将 $level: 400
添加到服务声明中,但这似乎没有多大意义。提前感谢任何帮助。
定义为 type: service
的处理程序严格按原样使用,因为它们是您已经构建的实例。他们没有从主独白配置中传递任何参数;这仅适用于它为您构建的服务。因此,出于这个原因,您确实需要添加 $level
作为自定义处理程序的显式参数。
您的 main
处理程序定义可能会引起一些进一步的混淆。虽然 handler
是一个有效的配置键,但它不适用于 stream
处理程序,因为它只对包装其他处理程序的处理程序有意义,例如 filter
。所以这只是被忽略了。
可以在代码 here.
中找到处理程序类型的完整列表以及实际应用于每个处理程序的配置键。
在使用 Monolog 的 Symfony 4.3 中,我创建了一个自定义处理程序来将日志推送到 AWS Firehose。这是构造函数:
class FirehoseLogHandler extends AbstractProcessingHandler {
public function __construct(
FirehoseClient $firehoseClient,
FormatterInterface $formatter,
$streamName,
$level = Logger::INFO,
$bubble = true
) {
$this->firehoseClient = $firehoseClient;
$this->streamName = $streamName;
$this->formatter = $formatter;
parent::__construct($level, $bubble);
}
这是我的 monolog.yaml
配置:
monolog:
handlers:
firehose_handler:
type: service
id: kinesis_stream_handler
main:
type: stream
handler: firehose_handler
level: error
channels: ["!event"]
services:
kinesis_stream_handler:
class: App\Logger\Handler\FirehoseLogHandler
arguments:
$firehoseClient: '@aws.firehose'
$formatter: '@App\Logger\Formatter\FirehoseLogFormatter'
$streamName: 'firehose-stream-test'
我遇到的问题是 $level
总是设置为 Logger::INFO
(200),或者在构造函数中设置的任何值。它似乎忽略了 yaml 配置中设置的内容。
我在这里做错了什么?我知道我总是可以将 $level: 400
添加到服务声明中,但这似乎没有多大意义。提前感谢任何帮助。
定义为 type: service
的处理程序严格按原样使用,因为它们是您已经构建的实例。他们没有从主独白配置中传递任何参数;这仅适用于它为您构建的服务。因此,出于这个原因,您确实需要添加 $level
作为自定义处理程序的显式参数。
您的 main
处理程序定义可能会引起一些进一步的混淆。虽然 handler
是一个有效的配置键,但它不适用于 stream
处理程序,因为它只对包装其他处理程序的处理程序有意义,例如 filter
。所以这只是被忽略了。
可以在代码 here.
中找到处理程序类型的完整列表以及实际应用于每个处理程序的配置键。