eth8505 / zf3-monolog
Requires
- php: ^7.1
- monolog/monolog: ^1.24 || ^2.0
- zendframework/zend-servicemanager: ^3.0
- zendframework/zend-stdlib: ^3.2
Requires (Dev)
- phpunit/phpunit: ^7.5
This package is auto-updated.
Last update: 2020-09-15 16:40:34 UTC
README
!! 该包已不再维护,请使用 eth8505/laminas-monolog 代替 !!
Eth8505\Monolog - ZF3 模块,用于将 monolog 集成到 Zend Framework v3
Eth8505\Monolog 模块通过 zendframework/zend-servicemanager 将 monolog/monolog 集成为 zf3 模块。
安装方法
⚠️ 注意:此包需要至少 PHP 7.1。
使用 composer 安装 eth8505/zf3-monolog
包。
$ composer require eth8505/zf3-monolog
在您的 application.config.php
文件中加载模块,如下所示
<?php return [ 'modules' => [ 'Eth8505\\Monolog', // ... ], ];
使用方法
在您的应用程序配置(通常位于 config/autoload/monolog.global.php
)中,指定您的 monolog 在 monolog/loggers
键中。
配置日志记录器
每个键(示例代码中的 Log\MyApp
)可以包含一个独立的日志记录器配置,并且可以直接通过服务管理器访问。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default' ] ] ] ];
每个日志记录器配置都可以直接通过服务管理器访问。
$logger = $container->get('Log\MyApp');
添加日志处理器
可以通过 handlers
键向日志记录器配置添加多个 处理器。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default', 'handlers' => [ 'stream' => [ 'name' => StreamHandler::class, 'options' => [ 'path' => 'data/log/myapp.log', 'level' => Logger::DEBUG ], ], 'fire_php' => [ 'name' => ChromePHPHandler:class ] ] ] ] ] ];
使用格式化程序
每个处理器都可以配置一个 格式化程序 来指定特定的格式。例如,当将日志发送到 logstash 时非常有用。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default', 'handlers' => [ 'stream' => [ 'name' => StreamHandler::class, 'options' => [ 'path' => 'data/log/myapp.log', 'level' => Logger::DEBUG ], 'formatter' => [ 'name' => LogstashFormatter::class, 'options' => [ 'applicationName' => 'myApp', 'systemName' => gethostname() ] ] ] ] ] ] ] ];
使用处理器
处理器 可以用于丰富日志记录的数据,例如 WebProcessor 可以用于将请求 URI 和客户端 IP 地址添加到日志记录中。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default' 'processors' => [ WebProcessor::class ] ] ] ] ];
特殊语法
在配置处理器、格式化程序或处理器时,您可以指定一个字符串格式的类名(或 ::class 常量)。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default' 'processors' => [ WebProcessor::class ] ] ] ] ];
或者使用名称/选项数组表示法,其中选项通过使用基于反射的命名参数转换为相应类的构造函数参数。
return [ 'monolog' => [ 'loggers' => [ 'Log\MyApp' => [ 'name' => 'default' 'processors' => [ [ 'name' => WebProcessor::class, 'options' => [ 'extraFields' => [ 'url' => 'REQUEST_URI', 'http_method' => 'REQUEST_METHOD', 'server' => 'SERVER_NAME' ] ] ] ] ] ] ] ];
自定义处理器、处理器和格式化程序
由于此模块通过使用插件管理器通过服务管理器创建一切,因此可以通过将它们添加到相应的配置键中轻松注册自定义处理器、处理器和格式化程序。
return [ 'monolog' => [ 'formatters' => [ factories' => [ MyCustomFormatter::class => MyCustomFormatterFactory::class ] ], 'handlers' => [ 'factories' => [ MyCustomHandler::class => MyCustomHandlerFactory::class ] ], 'processors' => [ 'factories' => [ MyCustomProcessor::class => MyCustomProcessorFactory::class ] ] ] ];
⚠️ 注意,只有使用自定义工厂的格式化程序需要显式注册。其他配置的处理程序将自动使用基于内部反射的工厂创建。
扩展日志处理器
您可以在其他日志器中定义默认日志记录器并从它们继承。
return [ 'monolog' => [ 'loggers' => [ 'base' => [ // default logger config ], 'inherited' => [ '@extends' => 'base' ] ] ] ];
ℹ️ 尽管自版本1.0.3起支持递归,但递归限制为10级,如果递归更深,将抛出Eth8505\Monolog\Exception\RuntimeException
异常。
有关详细信息,请参阅示例配置。
感谢
感谢neckeloo和他的Monolog Module以及enlitepro的Enlite Monolog,因为它们为这个模块提供了模板。