socarrat / logging
适用于所有应用的强大日志库。
README
适用于所有应用的强大日志库。
功能
- 简单而可靠的日志记录。
- 支持您喜欢的任何类型的输出。
- 如果您需要自定义功能,可以编写自己的日志记录器实现。
- 多个输出流。
- 静态方法:从应用程序的任何部分调用日志记录器,无需引用任何日志对象!
- 最小日志级别.
安装
您可以通过 Packagist 安装此库:composer require socarrat/logging
。
示例
use Socarrat\Logging\Loggers\FileLogger; use Socarrat\Logging\LoggingManager; use Socarrat\Logging\LogLevel; $fileLogger = new FileLogger( getFilePath: function(LogLevel $level, string $msg) { $l = strtolower($level->toString()); return __DIR__."/test.$l.log"; } ); LoggingManager::addLogger($fileLogger); LoggingManager::setMinimumLogLevel(LogLevel::LOG_WARNING); LoggingManager::log(LogLevel::LOG_CRITICAL, "Hello CRITICAL"); //=> logs to test.critical.log LoggingManager::log(LogLevel::LOG_ERROR, "Hello ERROR"); //=> logs to test.debug.log LoggingManager::log(LogLevel::LOG_WARNING, "Hello WARNING"); //=> logs to test.warning.log LoggingManager::log(LogLevel::LOG_NOTICE, "Hello NOTICE"); //=> will not be logged due to minimum log level log LoggingManager::log(LogLevel::LOG_INFO, "Hello INFO"); //=> will not be logged LoggingManager::log(LogLevel::LOG_DEBUG, "Hello DEBUG"); //=> will not be logged
您可以在这里找到此脚本的输出。更多示例在examples/
目录中。
内置日志记录器
以下日志记录器包含在库中,命名空间为 Socarrat\Logging\Loggers
。您也可以实现自己的日志记录器;请参阅Logger
接口和LoggingManager::addLogger
。
FileLogger
将日志输出到文件。
new FileLogger(\Closure $getFilePath)
构建一个新的文件日志记录器。您可以将一个闭包传递给构造函数,该闭包在每次日志记录时被调用,并返回日志应发送到的文件名。它接收两个位置参数:LogLevel
和要记录的字符串。
您可以通过调用 FileLogger::setFilePathGetter(\Closure $getFilePath)
来替换文件路径获取器。
NullLogger
此日志记录器不对日志进行任何操作。
API
class Socarrat\Logging\LoggingManager
这是中央日志管理器;您应该使用它来记录事项。
static public function addLogger(Logger $logger): int
添加要使用的 logger 实例。返回分配给日志记录器的索引。如果已设置多个日志记录器,则每个日志记录器都会被调用。
static public function log(LogLevel $level, string $message)
使用已设置的日志记录器记录给定消息的给定日志级别。如果已设置多个日志记录器,则每个日志记录器都会被调用。
static public function setMinimumLogLevel(LogLevel $level)
设置最小 日志级别。低于此级别的日志消息将不会被记录。
示例:最小日志级别是 LOG_NOTICE
。具有 LOG_DEBUG
级别的日志不会被记录,而 LOG_ERROR
级别的日志会被记录。
abstract class Socarrat\Logging\Logger
这是日志记录器的基类。所有日志记录器都应该扩展它。
abstract public function log(LogLevel $level, string $message)
在给定的日志级别记录给定的消息。您不应直接调用此方法,而是使用 LogManager::log
。
enum Socarrat\Logging\LogLevel: int
包含RFC 5424的日志级别。
LogLevel::toString()
将返回日志级别的字符串表示,例如调用(LogLevel::LOG_ALERT)->toString()
将返回ALERT
。
版权
© 2023 Romein van Buren. 在MIT许可下发布。
有关完整的版权和许可信息,请查看与源代码一起分发的license.md
文件。