phpgt / logger
PSR-3 日志记录器和实现。
v1.0.0
2021-09-21 14:18 UTC
Requires
- php: >=7.4
Requires (Dev)
- phpstan/phpstan: >=0.12.64
- phpunit/phpunit: 9.*
This package is auto-updated.
Last update: 2024-09-10 06:14:19 UTC
README
无需配置即可开始记录日志。默认情况下,日志记录器作为静态单例运行 - Log::error("您不能这样做");
就可以开始使用。当需要时,您可以配置日志记录器将日志发送到不同的文件/套接字来源。
本库的目标是简约。没有计划实现比文件和套接字更多的日志记录来源。这简化了代码,使其具有单一职责,但仍然模块化,可以连接到处理日志到电子邮件地址、Slack 消息、AWS SQS、数据库等的外部脚本。
日志级别
本库实现了PSR-3 接口。这意味着在您的代码中,您可以选择以下级别的日志记录,并且您的环境可以决定要报告的最小日志级别。例如,在生产服务器上记录调试信息可能过于冗长。这与Syslog 协议一致。
debug
- 详细调试信息。info
- 有趣的事件。notice
- 正常但重要的事件。warning
- 非错误但异常的情况。error
- 运行时错误,不需要立即采取行动,但通常应该记录并监控。critical
- 严重情况。alert
- 必须立即采取行动。emergency
- 系统不可用。
静态使用
只有当类真正无状态时才应使用静态类。日志记录是一个没有对运行程序产生副作用的事例,因此主要的期望是使用 Log
类的静态方法进行日志记录。
不需要在程序的所有类中传递 Log
类的实例,也不应该要求在所有可能的日志记录位置都使用依赖注入框架。
然而,某些程序需要只能通过 Log
类的实例才能满足的先进日志记录功能,例如为程序的不同区域使用不同的日志来源。请查看示例目录,了解如何使用实例化实现此目的。
使用示例
use Gt\Logger\Log; use Gt\Logger\LogConfig; use Gt\Logger\LogLevel; use Gt\Logger\LogHandler\StreamHandler; use Gt\Logger\LogHandler\FileHandler; // Send warnings and above to the remote socket. LogConfig::addHandler(new StreamHandler("/example/remote.sock"), LogLevel::WARNING); // Send all log types to the local log file. LogConfig::addHandler(new FileHandler("/var/log/example.log"), LogLevel::DEBUG); $fileName = "name.txt"; if(file_exists($fileName)) { $name = trim(file_get_contents($fileName)); if(empty($name)) { Log::error("Empty name loaded"); } else { Log::info("Loaded name: $name"); } } else { $name = "you"; Log::info("Using default name"); }