bayfrontmedia/multi-logger

一个易于使用的库,用于从单个类中管理多个 Monolog 通道。

v1.1.0 2023-08-16 13:45 UTC

This package is auto-updated.

Last update: 2024-09-16 16:10:05 UTC


README

一个易于使用的库,用于从单个类中管理多个 Monolog 通道。

许可证

本项目是开源的,可在 MIT 许可证 下使用。

作者

Bayfront Media

需求

  • PHP ^8.0

安装

composer require bayfrontmedia/multi-logger

使用

注意:Multi-Logger 抛出的所有异常都扩展自 Bayfront\MultiLogger\Exceptions\MultiLoggerException,因此您可以选择以尽可能窄或宽的方式捕获异常。

Multi-Logger 的存在是为了从单个类中管理多个 Monolog 通道。

在某些情况下,您可能仍然需要直接与 Monolog\Logger 对象交互,而 Multi-Logger 允许您通过 getChannel 方法来实现这一点。

必须将 Logger 实例传递给构造函数,它将自动设置为默认和当前通道。

为了帮助在引用日志通道时保持一致性,Bayfront\MultiLogger\ChannelName 类包含具有建议通道名的常量,包括

  • APP
  • AUDIT
  • CLI
  • DATABASE
  • CONTROLLER
  • DEV
  • ERROR
  • HEALTH
  • HTTP
  • JOB
  • MODEL
  • NOTIFICATION
  • OPS
  • PRIVILEGES
  • PROD
  • QA
  • QUEUE
  • REQUEST
  • RESPONSE
  • ROUTER
  • SCHEDULE
  • SECURITY
  • STAGING
  • STORAGE

示例

use Bayfront\MultiLogger\ChannelName;
use Bayfront\MultiLogger\Log;
use Monolog\Logger;
use Monolog\Handler\FirePHPHandler;

$app_channel = new Logger(ChannelName::APP);
$app_channel->pushHandler(new FirePHPHandler());

$log = new Log($app_channel);

公共方法

记录事件

getChannels

描述

返回通道名数组。

参数

  • (None)

返回

  • (array)

getDefaultChannel

描述

返回默认通道名。

参数

  • (None)

返回

  • (string)

getCurrentChannel

描述

返回当前通道名。

参数

  • (None)

返回

  • (string)

addChannel

描述

添加具有相同名称的新通道的日志记录器实例。

如果已存在具有相同名称的现有实例,则将其覆盖。

参数

  • $logger (object): Monolog\Logger 对象

返回

  • (self)

示例

use Bayfront\MultiLogger\ChannelName;
use Monolog\Logger;
use Monolog\Handler\FirePHPHandler;

$audit_channel = new Logger(ChannelName::AUDIT);
$audit_channel->pushHandler(new FirePHPHandler());

$log->addChannel($audit_channel);

isChannel

描述

通道名是否存在?

参数

  • $channel (string)

返回

  • (bool)

示例

if ($log->isChannel(ChannelName::APP)) {
    // Do something
}

getChannel

描述

返回给定通道的 Logger 实例。

参数

  • $channel = '' (string): 要返回的通道名。如果为空字符串,则返回当前通道。

返回

  • (object): Monolog\Logger 对象

抛出

  • Bayfront\MultiLogger\Exceptions\ChannelNotFoundException

示例

try {

    $app_channel = $log->getChannel(ChannelName::APP);

} catch (ChannelNotFoundException $e) {
    die($e->getMessage());
}

channel

描述

设置用于下一个记录事件的通道名。

默认情况下,所有记录的事件都将记录到构造函数中使用的默认通道。

参数

  • $channel (string)

返回

  • (self)

抛出

  • Bayfront\MultiLogger\Exceptions\ChannelNotFoundException

示例

try {
    
    $log->channel(ChannelName::AUDIT)->info('This is an informational log message.');
    
} catch (ChannelNotFoundException $e) {
    die($e->getMessage());
}

emergency

描述

系统无法使用。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

alert

描述

必须立即采取措施。

示例:整个网站关闭,数据库不可用等。这应该触发短信警报并唤醒您。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

critical

描述

严重条件。

示例:应用程序组件不可用,出现意外异常。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

error

描述

不需要立即采取行动的运行时错误,但通常应记录并监控。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

warning

描述

非错误性的异常情况。

示例:使用已弃用的API,API使用不当,可能不是错误的行为。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

notice

描述

正常但重要的事件。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

info

描述

有趣的事件。

示例:用户登录,SQL日志。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

debug

描述

详细的调试信息。

参数

  • $message (string)
  • $context (array)

返回

  • (void)

log

描述

任意级别的日志。

参数

  • $level (混合)
  • $message (string)
  • $context (array)

返回

  • (void)