pls / log
PLS 记录器规范
Requires
- php: ^7.3
This package is not auto-updated.
Last update: 2024-09-15 04:05:33 UTC
README
本包描述了一个日志库的通用接口。其目标是允许库接收一个实现了 Pls\Log\Logger
的对象,并以简单通用的方式向其写入日志。
本文件中“必须”,“禁止”,“必需”,“应该”,“不应该”,“推荐”,“可能”,“可选”等关键词的解释,应参照 RFC 2119 的描述。
1. 规范
实现必须完全实现指定的功能,并且可以提供比指定更多的功能。
Pls\Log\LoggerInterface
暴露了一个名为 log
的方法,用于记录消息。该方法接受三个参数:$level
、$message
和 $context
(可选)。
1.1 $level
这是一个 int
类型的值,对应于八个 RFC 5424 严重性级别之一。
一个名为 LogLevel
的接口提供了与 int
严重性级别映射的语义标签的常量。建议用户将这些常量作为 $level
值传递。
传递一个本规范未定义的 $level
值(即不大于等于 0 且小于等于 7),必须抛出 Pls\Log\InvalidSeverity
的一个实例。
1.2 $message
这是一个用户定义的 string
值,用于记录。
消息可以包含占位符,实现者可以将这些占位符替换为上下文数组中的值。
占位符名称必须与上下文数组中的键相对应。
占位符名称必须由一个单开大括号 {
和一个单闭大括号 }
分隔。分隔符和占位符名称之间不得有空白字符。
占位符名称只能由字符 A-Z
、a-z
、0-9
、下划线 _
和点 .
组成。
实现者可以使用占位符来实现各种转义策略,并将日志转换为显示格式。用户不应预先转义占位符值,因为它们无法确定数据将在何种上下文中显示。
传递包含格式错误的占位符名称的 $message
值,必须抛出 Pls\Log\InvalidMessage
的一个实例。
1.3 $context
这是一个可选的用户定义的 array
;默认值为空数组 []
。它旨在包含不适合在字符串中很好地表示的任何额外信息。数组可以包含任何内容。上下文中的给定值不得抛出异常或引发任何 PHP 错误、警告或通知。
数组的键和值可以是 PHP 允许的任何类型,并且可以在 $context
数组中具有不同的类型,但与占位符名称对应的数组键必须是 string
类型,与 $message
中的占位符名称相同。
必须为 $message
中的每个占位符名称提供一个数组值。传递一个不包含与 $message
中存在的占位符名称对应的键的 $context
数组,必须抛出 Pls\Log\InvalidContext
的一个实例。
如果将实现 \Throwable
的对象传递到上下文数据中,它必须在 'thrown'
键中。记录异常是一种常见的模式,这允许实现者当日志后端支持时从异常中提取堆栈跟踪。实现者在使用之前必须仍然验证 'thrown'
键实际上是 \Thowable
,因为它可能包含任何内容。
1.4 异常
所有实现抛出的异常都必须实现 Pls\Log\LoggerException
。
2. 包
这些接口作为 pls/log 包的一部分提供。
提供 pls/log 实现的包应声明它们提供 pls/log-implementation
1.0.0
。
需要实现的项目应要求 pls/log-implementation
^1.0.0
。
3. 安装
使用 composer 安装
composer require pls/log
需要 PHP >= 7.3。
4. 许可证
此包根据 MIT 许可证 发布。