ibsciss / supermonolog-service-provider
Silex 框架的扩展 Monolog 服务提供者。作为选项添加 crossFinger & log rotation 处理器。
Requires
- monolog/monolog: ~1.7
- silex/silex: ~1.0
- symfony/monolog-bridge: ~2.4
Requires (Dev)
- satooshi/php-coveralls: dev-master
This package is not auto-updated.
Last update: 2024-09-14 16:30:26 UTC
README
为 Monolog 服务提供者扩展的 Silex 框架
为什么是 SuperMonologService ?
Silex 内置的 MonologServiceProvider
只使用了 Monolog 的少数功能,并且不允许高级配置。
此 SuperMonologService 更具可扩展性,并在 Silex 核心中提供了两种新的日志策略
- 一个
FingersCrossed
策略 - 一个
RotatingFile
策略
默认情况下,仅激活 FingersCrossed 策略,但您可以将策略组合使用或同时使用一次。
FingerCrossed 策略是什么?
如Monolog 文档所述
FingersCrossedHandler: 一个非常有趣的包装器。它接受一个日志记录器作为参数,并将所有级别的日志记录累积到超过定义的严重性级别。此时,它将所有记录(包括较低严重性的记录)发送到它包装的处理程序。这意味着在错误实际发生之前,您将不会在日志中看到任何内容,但一旦发生,您将获得完整的信息,包括调试和 info 记录。这为您提供了所需的所有信息,但只有在需要时才提供。
RotatingFile 策略是什么?
正如 Monolog 文档所述
RotatingFileHandler: 将日志记录到文件,并为每天创建一个日志文件。它还将删除比
maxfiles
更旧的文件。尽管如此,您应该使用 logrotate 进行高级设置,这只是一个快速而简单的解决方案。
如何安装它?
- 在您的
composer.json
文件的 require 部分中添加"Ibsciss/supermonolog-service-provider": "dev-master"
并运行composer update
命令。 - 使用 Silex 的 register 方法注册服务
$app->register(new SuperMonologServiceProvider())
(不要忘记使用\Ibsciss\Silex\Provider\SuperMonologServiceProvider
语句)。
基本使用
SuperMonolog 通过覆盖 monolog.handler
服务来扩展原始的 monolog
服务(以及相关的 logger
服务),并在其上推送自己的策略。因此,您可以像以前一样使用您的 $app['monolog']
服务。
因此,您必须像内置的 monolog
服务一样设置 ServiceProvide
:您必须使用 monolog.logfile
属性定义应用程序将存储日志的位置(阅读完整的内置提供者文档)。
$app->register(new Silex\Provider\MonologServiceProvider(), array( 'monolog.logfile' => __DIR__.'/development.log', ));
在注册 SuperMonologService
后,仅激活 FingersCrossed
策略(并且仅在生产模式下)。
在调试模式下($app['debug'] = true;
)服务提供基本的 StreamHandler
。
注意:默认情况下使用 JsonFormatter 生成日志
您可以通过将 monolog.fingerscrossed
属性设置为 false
来禁用 FingersCrossed
策略,并返回到默认的 MonologServiceProvider
使用的 StreamHandler
。
FingersCrossedHandler 选项
使用SuperMonologService,默认处理器使用FingersCrossed策略来处理日志,它提供了以下选项:
monolog.fingerscrossed
一个布尔值,用于启用FingersCrossed策略(默认:true)monolog.fingerscrossed.handler
FingersCrossed策略使用的内部处理器来发送日志(默认:StreamHandler)monolog.fingerscrossed.level
日志打印到定义的处理器时的严重级别,接受以下值:Monolog\Logger::DEBUG
Monolog\Logger::INFO
Monolog\Logger::NOTICE
(默认级别)Monolog\Logger::WARNING
Monolog\Logger::ERROR
Monolog\Logger::CRITICAL
Monolog\Logger::ALERT
Monolog\Logger::EMERGENCY
注意:monolog.level
仍然可用,并用于定义处理日志的日志级别。例如,如果您将monolog.level
设置为INFO
并将monolog.fingerscrossed.level
设置为WARNING
,则在发生WARNING事件时,所有INFO严重级别的日志将被发送。
轮转文件策略
您可以通过将monolog.rotatingfile
属性设置为true
来启用RotatingFileHandler
。
默认情况下,FingersCrossedHanfler仍然处于活动状态,并作为内部处理器被FingersCrossedHandler调用以发送日志。
如果将monolog.fingerscrossed
设置为false
并将monolog.rotatingfile
设置为true
,则默认处理器变为RotatingFile
。
轮转文件策略定义以下选项:
monolog.rotatingfile
一个布尔值,用于启用轮转文件策略(默认:false
)monolog.rotatingfile.maxfiles
一个整数值,设置轮转处理器保留的最大文件数。