his / log
为日志记录器黑客标准接口
Requires
- hhvm: ^4.0
- hhvm/hhvm-autoload: ^2.0
Requires (Dev)
- hhvm/hhast: ^4.0
This package is auto-updated.
Last update: 2024-09-10 20:46:34 UTC
README
日志接口
本文件描述了日志库的通用接口。
主要目标是允许库接收一个 His\Log\LoggerInterface
对象,并以简单通用的方式向其写入日志。有特殊需求的框架和CMS可以扩展接口以实现自己的目的,但应保持与本文件的兼容性。这确保了应用程序使用的第三方库可以向集中式应用程序日志写入。
本文件中“必须”、“禁止”、“必需”、“应当”、“不应”、“推荐”、“可以”、“可选”等关键词的解释与RFC 2119中的描述一致。
本文件中“实现者”一词的解释为在日志相关库或框架中实现LoggerInterface
的人。使用日志记录器的用户称为“用户”。
1. 规范
1.1 基础知识
-
LoggerInterface
提供了八个方法来向八个RFC 5424级别(调试、信息、注意、警告、错误、严重、警报、紧急)写入日志。 -
第九个方法
log
接受一个日志级别作为第一个参数。调用此方法并传递其中一个日志级别常量,其结果必须与调用特定级别的特定方法相同。调用此方法并传递本规范未定义的级别,如果实现者不知道该级别,则必须抛出His\Log\Exception\InvalidArgumentException
。用户在没有确切知道当前实现是否支持自定义级别的情况下,不应使用自定义级别。
1.2 消息
-
每个方法都接受一个字符串作为消息。实现者可以对传递的对象进行特殊处理。如果没有,实现者必须将其转换为字符串。
-
消息可以包含占位符,实现者可以用上下文字符数组中的值替换这些占位符。
占位符名称必须对应上下文字符数组中的键。
占位符名称必须由单个开括号
{
和一个单个闭括号}
分隔。分隔符和占位符名称之间不应有任何空白字符。占位符名称应仅由字符
A-Z
、a-z
、0-9
、下划线_
和点.
组成。其他字符的使用保留用于未来对占位符规范的修改。实现者可以使用占位符来实施各种转义策略和转换日志以进行显示。用户不应预先转义占位符值,因为他们不知道数据将在哪个上下文中显示。
1.3 上下文
-
每个方法都接受一个数组作为上下文数据。这旨在包含不适合字符串的任何额外信息。数组可以包含任何内容。实现者必须确保尽可能宽松地处理上下文数据。上下文中的特定值不得抛出异常或引发任何PHP错误、警告或通知。
-
如果上下文数据中传递了
Exception
对象,则必须在'exception'
键中。记录异常是一种常见模式,这允许实现者在日志后端支持的情况下从异常中提取堆栈跟踪。实现者在使用之前必须验证'exception'
键确实是一个Exception
,因为它可能包含任何内容。
1.4 辅助类和接口
-
His\Log\LogLevel
枚举包含八个日志级别的常量。 -
His\Log\LogLevelName
枚举包含命名日志级别的常量; -
《His\Log\LogLevelNameMap》提供从日志级别代码到名称的映射方法。