ibsciss/supermonolog-service-provider

Silex 框架的扩展 Monolog 服务提供者。作为选项添加 crossFinger & log rotation 处理器。

v2.0.3 2014-02-12 11:13 UTC

This package is not auto-updated.

Last update: 2024-09-14 16:30:26 UTC


README

Monolog 服务提供者扩展的 Silex 框架

Build Status Coverage Status Latest Stable Version Latest Unstable Version License

为什么是 SuperMonologService ?

Silex 内置的 MonologServiceProvider 只使用了 Monolog 的少数功能,并且不允许高级配置。

SuperMonologService 更具可扩展性,并在 Silex 核心中提供了两种新的日志策略

  • 一个 FingersCrossed 策略
  • 一个 RotatingFile 策略

默认情况下,仅激活 FingersCrossed 策略,但您可以将策略组合使用或同时使用一次。

FingerCrossed 策略是什么?

Monolog 文档所述

FingersCrossedHandler: 一个非常有趣的包装器。它接受一个日志记录器作为参数,并将所有级别的日志记录累积到超过定义的严重性级别。此时,它将所有记录(包括较低严重性的记录)发送到它包装的处理程序。这意味着在错误实际发生之前,您将不会在日志中看到任何内容,但一旦发生,您将获得完整的信息,包括调试和 info 记录。这为您提供了所需的所有信息,但只有在需要时才提供。

RotatingFile 策略是什么?

正如 Monolog 文档所述

RotatingFileHandler: 将日志记录到文件,并为每天创建一个日志文件。它还将删除比 maxfiles 更旧的文件。尽管如此,您应该使用 logrotate 进行高级设置,这只是一个快速而简单的解决方案。

如何安装它?

  1. 在您的 composer.json 文件的 require 部分中添加 "Ibsciss/supermonolog-service-provider": "dev-master" 并运行 composer update 命令。
  2. 使用 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 一个整数值,设置轮转处理器保留的最大文件数。