jkachel / codeigniter-monolog-plus
提供了一种与Code Igniter一起使用Monolog的适配器。
Requires
- graylog2/gelf-php: ^1.5
- monolog/monolog: ^1.23
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。这是最低级别,因此它是一个用于所有事物的收集罐。
配置
配置文件与上游库非常不同,并且不兼容。
库将配置选项结构化为一个单个数组,包含三个主要部分
- 全局选项 - 这些是与整个库相关的事物(并且大多数应用于Monolog实例本身)
- 处理器选项 - 您可能需要的每个单独处理器的设置
- 优先级列表 - 记录事物的顺序(作为基础,阈值也在此生效)
该数组本身只是一个标准的关联数组,如下所示
$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,您需要为 enable 和 threshold 选项设置一个块,但截至目前,此库没有公开其他任何选项。
优先级
优先级只是处理器的列表。它们按照先进先出(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 文件。