socarrat/logging

适用于所有应用的强大日志库。

v0.2.0 2023-05-07 11:32 UTC

This package is auto-updated.

Last update: 2024-09-18 17:19:11 UTC


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文件。