xp-framework/logging

XP 框架的日志记录

v11.2.0 2024-03-28 22:23 UTC

README

Build status on GitHub XP Framework Module BSD Licence Requires PHP 7.0+ Supports PHP 8.0+ Latest Stable Version

XP 框架的日志记录。

示例

use util\log\Logging;
use lang\Throwable;
use peer\ConnectException;

$logger= Logging::named('service')->toConsole();
$logger->info('Starting application');

try {
  $service->operation();
} catch (ConnectException $e) {
  $logger->warn('Service not available', $e);
} catch (Throwable $t) {
  $logger->error('Error during service invocation', $t);
}

日志级别

此库支持以下级别:DEBUG、INFO、WARN 和 ERROR。如上图所示,可以使用这些级别命名的日志方法来记录消息。所有方法都有 printf 风格的变体

  • debug(var... $args)debugf(string $format, var... $args).
  • info(var... $args)infof(string $format, var... $args).
  • warn(var... $args)warnf(string $format, var... $args).
  • error(var... $args)errorf(string $format, var... $args).

日志附加器

以下附加器可用

  • util.log.FileAppender(string $filename) - 将日志记录到本地文件
  • util.log.ConsoleAppender() - 将日志记录到控制台
  • util.log.ColoredConsoleAppender() - 使用基于日志级别的颜色将日志记录到控制台
  • util.log.SmtpAppender(string $email, string $prefix= "", bool $sync= true) - 通过电子邮件将日志记录到指定的电子邮件地址
  • util.log.StreamAppender(io.streams.OutputStream $out) - 将日志记录到来自 io.streams 的任何输出流
  • util.log.SyslogAppender(string $identifier, int $facility= LOG_USER) - 使用 syslog 功能记录
  • util.log.SyslogUdpAppender(string $ip= '127.0.0.1', int $port= 514, string $identifier= null, int $facility= LOG_USER, string $hostname= null) - 使用 UDP 协议通过 syslog 记录
  • util.log.BufferedAppender() - 将日志记录到内存缓冲区

布局

默认日志布局包括时间、进程 ID、级别和消息,这些由 util.log.layout.DefaultLayout 类实现。其呈现方式如下

[13:43:39  4368  info] Starting application

可以通过实例化 util.log.layout.PatternLayout、传递一个格式字符串并使用附加器的 setLayout() 方法来更改日志布局。格式字符串由一个百分号 (%) 后跟格式标记和任何其他字符组成。以下格式标记受到支持

  • %m - 消息
  • %c - 类别名称
  • %l - 日志级别 - 小写
  • %L - 日志级别 - 大写
  • %d - 日期(YYYY-MM-DD)
  • %t - 时间(HH:MM:SS)
  • %p - 进程 ID
  • %% - 文字百分号 (%)
  • %n - 换行符
  • %x - 如果可用,上下文信息

配置

您可以使用 Logging DSL 来创建您的日志设置,而不是使用程序化方式,您可以使用 配置 API,它与 INI 文件一起工作

[default]
uses=console|syslog|files

[console]
class=util.log.ConsoleAppender
level=ALL

[files]
class=util.log.FileAppender
args="/var/log/server.log"
level=ALL

[syslog]
class=util.log.SyslogUdpAppender
args=127.0.0.1|514|server
level=WARN|ERROR

进一步阅读