dwendrich / monolog-config
通过laminas-servicemanager简单集成可配置的monolog实例。
Requires
- php: ^7.1 || >=7.2
- laminas/laminas-servicemanager: ^3.4
- monolog/monolog: @stable
Requires (Dev)
- phpspec/prophecy-phpunit: ^2.0
- phpunit/phpunit: ^7.5.20 || ^8.5.2 || ^9.0.1
- squizlabs/php_codesniffer: ^2.0
README
使用laminas-servicemanager将可配置的monolog实例简单集成到应用程序中。
基于https://github.com/neeckeloo/MonologModule。
要求
- monolog-config ^2.0与PHP 7.2或更高版本兼容,需要Monolog 2或更高版本Monolog 2或更高
- 为了支持PHP 7.1,请使用monolog-config ^1.0
- Laminas服务管理器组件3.4或更高版本
安装
MonologConfig可以通过composer安装。有关如何获取composer或如何使用它的信息,请参阅getcomposer.org。
通过命令行安装
$ php composer.phar require dwendrich/monolog-config
通过composer.json
文件安装
{ "require": { "dwendrich/monolog-config": "^2.0" } }
要启用通过laminas-servicemanager创建日志实例,必须注册三个工厂。
例如,作为mezzio应用程序的一部分,您可以将ConfigProvider::class
添加到config/config.php
$aggregator = new ConfigAggregator([ MonologConfig\ConfigProvider::class, // ... other stuff goes here // Load application config in a pre-defined order in such a way that local settings // overwrite global settings. (Loaded as first to last): // - `global.php` // - `*.global.php` // - `local.php` // - `*.local.php` new PhpFileProvider('config/autoload/{{,*.}global,{,*.}local}.php'), // Load development config if it exists new PhpFileProvider('config/development.config.php'), ], $cacheConfig['config_cache_path']);
如果您实现了一个laminas mvc应用程序,请将MonologConfig
键添加到config/modules.config.php
或相应的config/application.config.php
模块部分。
用法
日志配置
在您的应用程序或模块配置中,只需在logger
键下添加一个键到monolog
部分。
例如,可以按如下方式设置具有键Application\Log
的日志记录器
return [ 'monolog' => [ 'logger' => [ 'Application\Log' => [ 'channel' => 'default', ], ], ], ];
定义日志的最小要求是channel
属性。通道用于将日志记录分配给应用程序的某些部分。
处理器配置
日志记录器本身不知道如何处理日志记录。这被委派给一个或多个处理器。有关处理器、格式化程序及其用法的更多信息,请参阅monolog文档。
以下代码向日志记录器注册了两个处理器
return [ 'monolog' => [ 'logger' => [ 'Application\Log' => [ 'channel' => 'default', 'handlers' => [ 'stream' => [ 'class' => \MonologConfig\Handler\RotatingFileSizeHandler::class, 'options' => [ 'filename' => 'data/log/application.log', 'filesize' => 2.5, 'compression' => 9, 'level' => Logger::DEBUG, ], ], 'fire_php' => new \Monolog\Handler\FirePHPHandler(), ], ], ], ], ];
处理器定义必须是一个包含至少一个class
属性的数组或一个Monolog\Handler\HandlerInterface
的实例。
添加处理器
处理器允许向日志记录添加额外信息。以下代码说明了如何添加处理器
return [ 'monolog' => [ 'logger' => [ 'Application\Log' => [ 'channel' => 'default', 'handlers' => [ 'stream' => [ 'class' => StreamHandler::class, 'options' => [ 'path' => 'data/log/application.log', 'level' => Logger::DEBUG, ], ], ], 'processors' => [ UidProcessor::class, new \Monolog\Processor\IntrospectionProcessor(Logger::ERROR), ], ], ], ], ];
要添加处理器,您可以使用字符串创建实例或将对象传递。为了与monolog一起工作,处理器必须是可调用的。
添加格式化程序
格式化程序用于格式化日志记录的输出。它们可以附加到处理器。
return [ 'monolog' => [ 'logger' => [ 'Application\Log' => [ 'channel' => 'default', 'handlers' => [ 'stream' => [ 'class' => StreamHandler::class, 'options' => [ 'path' => 'data/log/application.log', 'level' => Logger::DEBUG, ], 'formatter' => [ 'class' => LineFormatter::class, 'options' => [ 'format' => "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n", ], ], ], ], ], ], ], ];
可以通过提供一个包含class
属性和可选的包含构造函数参数的options
键的数组来添加格式化程序。
或者,可以将Monolog\Formatter\FormatterInterface
的实例作为参数传递
return [ 'monolog' => [ 'logger' => [ 'Application\Log' => [ 'channel' => 'default', 'handlers' => [ 'stream' => [ 'class' => StreamHandler::class, 'options' => [ 'path' => 'data/log/application.log', 'level' => Logger::DEBUG, ], 'formatter' => new LineFormatter( "[%datetime%] %channel%.%level_name%: %message% %context% %extra%\n" ), ], ], ], ], ], ];
获取日志记录器实例
您可以通过配置键从laminas-servicemanager中检索日志记录器实例,例如
/** @var Laminas\ServiceManager\ServiceManager $container */ $logger = $container->get('Application\Log'); $logger->debug('debug message');