pls/log

PLS 记录器规范

0.2.0 2019-04-18 15:42 UTC

This package is not auto-updated.

Last update: 2024-09-15 04:05:33 UTC


README

Version semver License

本包描述了一个日志库的通用接口。其目标是允许库接收一个实现了 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-Za-z0-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 许可证 发布。