xp-framework / logging
XP 框架的日志记录
v11.2.0
2024-03-28 22:23 UTC
Requires
- php: >=7.0.0
- xp-framework/core: ^12.0 | ^11.0 | ^10.0
- xp-framework/reflection: ^3.0 | ^2.0
Requires (Dev)
- xp-framework/collections: ^10.0 | ^9.0 | ^8.0
- xp-framework/test: ^2.0 | ^1.0
README
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