his/log

为日志记录器黑客标准接口

dev-master 2019-03-10 07:48 UTC

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-Za-z0-9、下划线_和点.组成。其他字符的使用保留用于未来对占位符规范的修改。

    实现者可以使用占位符来实施各种转义策略和转换日志以进行显示。用户不应预先转义占位符值,因为他们不知道数据将在哪个上下文中显示。

1.3 上下文

  • 每个方法都接受一个数组作为上下文数据。这旨在包含不适合字符串的任何额外信息。数组可以包含任何内容。实现者必须确保尽可能宽松地处理上下文数据。上下文中的特定值不得抛出异常或引发任何PHP错误、警告或通知。

  • 如果上下文数据中传递了Exception对象,则必须在'exception'键中。记录异常是一种常见模式,这允许实现者在日志后端支持的情况下从异常中提取堆栈跟踪。实现者在使用之前必须验证'exception'键确实是一个Exception,因为它可能包含任何内容。

1.4 辅助类和接口

  • His\Log\LogLevel枚举包含八个日志级别的常量。

  • His\Log\LogLevelName枚举包含命名日志级别的常量;

  • 《His\Log\LogLevelNameMap》提供从日志级别代码到名称的映射方法。