jkachel/codeigniter-monolog-plus

提供了一种与Code Igniter一起使用Monolog的适配器。

v2.0.2 2020-06-16 18:30 UTC

This package is auto-updated.

Last update: 2024-09-17 04:07:49 UTC


README

这是对@JoshHighland的Codeigniter-Monolog-Plus的分支,它本身是基于@SteveThomas的Codeigniter-Monolog

CodeIgniter Monolog Plus将Monolog日志包引入到CodeIgniter 3项目中,取代了内置的CI_Log库,并添加了一组可配置性。可以为各种目的、位置和服务设置多个记录器,并可以设置个别阈值以进行自己的记录。

这最初是一个简单的分支,用于添加Loggly、PHP Console和SyslogUdp(裸)支持,最终变成了一部分重写,使功能更加有用。它现在也与Composer更加紧密地集成。

上游变更

  • 添加了对Loggly、PHP Console和SyslogUdp驱动程序的支持
  • 更好的composer/autoload集成:**安装说明与上游有很大不同!**
  • 半自动安装程序 - 将为您复制适配器和配置文件
  • 为每个处理程序提供多个配置块
  • 可以设置记录器的优先级列表,以便您可以定义哪些服务需要记录
  • 为库本身提供调试功能,以及在无法读取您的配置文件时的安全措施

安装

此包现在在Packagist上,因此composer require jkachel/codeigniter-monolog-plus应该足够。如果您愿意添加dev-master

  • 在您的项目的composer.json中配置此存储库。请参阅https://composer.php.ac.cn/doc/02-libraries.md#publishing-to-a-vcs - 那里的第二个代码块具有“repositories”选项,您需要添加。
  • 添加包。 composer require jkachel/codeigniter-monolog-plus:dev-master
  • 安装适配器和配置文件。
    • 可选:运行安装程序。进入vendor/jkachel/codeigniter-monolog-plus文件夹,然后运行installer.php。这将复制将库与标准CodeIgniter 3安装集成的所需文件。它将尝试自己解决这个问题;如果它无法做到,您将需要输入项目的基路径。
    • 您也可以直接从application/复制文件。它们放在与应用程序根相同的目录中。
    • 确保将config文件夹中的monolog-dist.php重命名为monolog.php。
  • 更新配置文件。文件本身有文档说明,或参阅下文。
  • 在application/config/config.php中启用Composer支持。您可能需要显式设置路径,BASEPATH . '/vendor/autoload.php'通常有效。否则,CI期望Composer内容在application/中。

用法

如通常在CodeIgniter中使用log_message()记录错误、调试和信息消息。文件记录器将记录到您指定的文件中,其他所有内容将按配置文件中设置的方式记录。

日志级别

此库尚未使用标准的Monolog/RFC 5424日志级别;它仍然依赖于CodeIgniter默认设置。它们以这种方式映射

  • 'error' => ERROR (400)
  • 'info' => INFO (200)
  • 'debug' => DEBUG (100)

CI还定义了一个"all",它映射到DEBUG。这是最低级别,因此它是一个用于所有事物的收集罐。

配置

配置文件与上游库非常不同,并且不兼容。

库将配置选项结构化为一个单个数组,包含三个主要部分

  1. 全局选项 - 这些是与整个库相关的事物(并且大多数应用于Monolog实例本身)
  2. 处理器选项 - 您可能需要的每个单独处理器的设置
  3. 优先级列表 - 记录事物的顺序(作为基础,阈值也在此生效)

该数组本身只是一个标准的关联数组,如下所示

$config = array(
    // Global opts
    'introspection_processor' => true,
    ...
    // Handlers
    'handlers' => array(
        'ci_file' => array( 'default' => array( /* its config options */ ), 'testConfig' => array()),
        'file' => array( 'default' => array() ),   
    ),
    // Priority
    'priority' => array(
        'ci_file', // use default settings for this one
        array('file' => 'justInfos') // specific settings for this handler
    ) 
);

请注意,仅将处理器放在配置文件中并不一定能使其工作 - 在大多数情况下,您还需要确保有针对该处理器的包。例如,如果您想使用Loggly处理器,您需要通过composer安装Loggly包。有关要安装哪些软件包的详细信息,请参阅Monolog文档。这里例外的是基于文件的处理器和stream/stderr处理器;它们是Monolog核心包的一部分,并自动安装。

全局选项

这些位于数组的根处。

  • introspection_processor - 布尔值,打开/关闭一些额外的数据输出(文件、行、类等,尽管这主要来自日志库本身)
  • exclusion_list - 数组,要跳过记录的字符串
  • channel - 字符串,设置通道名称。这只是为了传递给Monolog构造函数;这个库目前并不一定支持不同的通道。

处理器选项

每个处理器可以包含您需要的任何数量的块,但实际上使用的每个块都应该有一个默认块。如果找不到命名的块或您指定了没有块名称的处理器,库将查找默认块。处理器本身是

  • file - 基本文件记录器,具有轮换。
  • ci_file - 主要与file相同,但日志是用使它们更具"CodeIgniter"风格的格式化程序编写的。
  • syslogudp - 通过UDP记录到Syslog服务器。
  • new_relic - 记录到New Relic账户。
  • gelf - 记录到Gelf账户。
  • hipchat - 记录到HipChat房间。
  • stderr - 记录到stderr(因此很可能记录到PHP错误日志)
  • papertrail - 记录到PaperTrail账户。
  • loggly - 记录到Loggly账户。
  • phpconsole - 记录到PHP控制台。(在生产环境中这非常不安全,因此如果您的应用程序范围的ENVIRONMENT定义设置为'production',它将禁用自己。)

块是另一个关联数组。它们都必须有这两个键

  • enabled - 布尔值,打开或关闭块
  • threshold - 整数,日志消息的(数值)阈值。这主要是RFC 5424阈值除以100(因此为1、2、4);随着级别的升高而变得更加宽松(因此1 - DEBUG - 实质上得到一切)。

除此之外,每个处理器都有自己的选项集。

file / ci_file

这两个使用相同的Monolog处理器,因此它们有相同的选项。

  • multiline - 布尔值,允许在日志输出中使用换行符
  • logfile - 日志文件的位置。日志处理器将自动调整文件名以添加日期。

syslogudp

  • host - 要连接到的主机
  • port - 要连接到的端口(默认514)。正如名称所示,这将通过UDP连接。
  • bubble - 允许消息向上冒泡(默认为true)。如果将其设置为false,则日志记录将在达到此处理器时停止。
  • ident - 应用程序的syslog标识。

new_relic

  • app_name - 要使用的应用程序名称。

hipchat

  • token - 您的 HipChat API 令牌。
  • room_id - 要发送消息的房间(ID 或名称)。
  • notification_name - 发送消息的身份。
  • notify - 布尔值,发送消息时向客户端发送通知。

papertrail

  • host - 要连接的主机。
  • port - 要使用的端口。
  • multiline - 布尔值,在输出中启用换行。

gelf

  • host - 要连接的主机。
  • port - 要使用的端口。

loggly

  • token - 您的 Loggly API 令牌。

phpconsole

如果您正在使用 phpconsole,您需要为 enablethreshold 选项设置一个块,但截至目前,此库没有公开其他任何选项。

优先级

优先级只是处理器的列表。它们按照先进先出(FIFO)的顺序排列 - 列表中的第一个处理器具有优先级。每个条目是以下两种情况之一

  • 要使用的处理器的名称 - 'ci_file', 'loggly' 等。这将在配置中为指定的处理器使用默认块。
  • 一个键值对,指定要使用的处理器和要使用的配置块。指定为 array('handler' => 'block name')。代码将拉取第一个键并用作处理器名称,并使用它的值作为要使用的配置块。如果找不到该块,它将尝试使用默认的。

如果找不到适合条目的适当设置,它将被忽略。如果块已设置为禁用,它也会被忽略。

调试模式/安全日志记录

该库有一个调试模式。这对于进行大量配置设置或在添加对其他处理器的支持时特别有用。要启用此模式,在您的 index.php 文件中定义 "CIMONOLOGDEBUG" 并将其设置为 true。

如果配置文件有问题,还有一个日志函数的安全措施。(此功能也用于调试模式日志。)安全日志是一个配置为写入 应用程序根/application/logs/log-failsafe.php 的另一个 Monolog 实例 - 如果您在那里看到该文件,这通常意味着配置文件中有些设置不正确,它感到困惑。

一些错误模式将触发安全日志记录的启用(包括调试模式),但如果没有配置任何日志记录项,则不会触发:如果所有配置块都设置为禁用,或者它们为空,它将设置一个没有任何实际处理器的 Monolog 实例。

兼容性

垫片最初是为与 CI 3 一起使用而编写的。与 CI 4 的意外测试效果不错,但没有进行深入测试。尽管如此,4 使用它自己的更好的日志记录功能。

许可

codeigniter-monolog-plus 在 MIT 许可证下许可 - 有关详细信息,请参阅 LICENSE 文件。