简单、模块化、PSR-3 兼容的日志库。

2.3.2 2015-06-20 23:10 UTC

This package is auto-updated.

Last update: 2024-09-09 05:20:35 UTC


README

Build Status

OSLogger 是一个 PSR3 兼容的模块化日志记录器。它通过适配器允许使用多个日志目标。

要求

  • PHP >= 5.3.0

特性

  • 快速简单的设置
  • PSR-3 兼容
  • 多个适配器
  • 为适配器设置最小和最大处理的日志级别

用法

OSLogger 通过使用适配器写入多个目标来工作。这些适配器可以是文件、数据库等常见事物,也可以是套接字和流等更复杂的事物。您可以创建自己的适配器或使用提供的其中一个。

以下是 FileAdaptor 的使用方法

$adaptor = new \Onesimus\Logger\Adaptors\FileAdaptor('logfile.log');
$logger = new \Onesimus\Logger\Logger($adaptor);

$logger->error("Here's a message with {placeholders}", array('placeholders' => 'turtles'));
// The log message will be "Here's a message with turtles" due to the placeholder interpolation
// per PSR3 spec.

如果您不想实际记录任何内容,但又不想在应用程序中添加条件记录,则可以使用 NullAdaptor 或简单地为 Logger 构造函数不提供适配器(如果没有提供适配器,则对象会创建一个 NullAdaptor)。

可以通过调用 Logger::addAdaptor($adaptor) 将多个适配器添加到同一日志记录器中

$adaptor2 = new \Onesimus\Logger\Adaptors\EchoAdaptor();
$logger->addAdaptor($adaptor2);

当生成日志时,它将被发送到所有注册的适配器,这些适配器被设置为处理特定的日志级别。因此,您可以使用多个 FileAdaptor 将日志记录到不同的地方,或者一个 FileAdaptor 和数据库适配器,等等。您还可以让超过或低于某个阈值的日志记录到一个地方,而所有日志记录到另一个地方。您可以根据自己的需求完全自定义日志记录器的功能。

特殊处理器

OSLogger 带有内置的 PHP 错误、关闭(只有当 error_get_last() 返回任何内容时才会执行)和未捕获异常的处理器。如果您想使用这些之一,创建一个新的 Logger\ErrorHandler 对象,并调用方法 registerErrorHandler()registerShutdownHandler($loglevel)registerExceptionHandler($loglevel) 并传递一个 Logger 对象。处理器将捕获错误或异常,并使用适当的日志级别进行记录。

处理器日志级别

  • 关闭:所有都是 critical(除非指定其他)
  • 异常:所有都是 critical(除非指定其他)
  • 错误
    • E_USER_ERROR, E_RECOVERABLE_ERROR 是 error
    • E_USER_WARNING, E_WARNING 是 warning
    • E_USER_NOTICE, E_NOTICE 是 notice
    • E_STRICT 是 debug

注意:如果函数 error_get_last() 返回任何内容,则关闭处理器将执行某些操作。处理器不会调用 exit() 或 die(),因此您可以注册另一个关闭处理器。

适配器 (\Onesimus\Logger\Adaptors)

###所有适配器

  • isHandling($level) - 检查适配器是否处理给定级别的日志。
  • setLevel($min, $max) - 设置适配器处理的最小/最大级别。如果只想设置最大,将第一个参数传递为 null
  • setDateFormat($format) - 设置日志中使用的日期格式。
  • getDateFormat() - 获取日志中使用的日期格式。
  • restoreDateFormat() - 将日期格式设置为默认的 "Y-m-d H:i:s T"。
  • getLastLogLine() - 返回最后写入的日志行。
  • setName($name) - Logger 使用的适配器名称,在将其添加到 Logger 对象之前设置。
  • getName() - 返回适配器名称

###NullAdaptor

日志黑洞。所有日志都被丢弃,永远不会再次看到。保存到 /dev/null

###EchoAdaptor

输出所有消息。仅此而已。

  • __construct($minimumLevel = LogLevel::DEBUG, $echoStr = "") - $echoStr 默认为 "{date}: [{level}] 信息: {message}\n"

  • setEchoString($string) - 设置用于输出日志消息的模板。请参阅占位符部分。

  • getEchoString() - 返回当前分配的输出模板。

###ConsoleAdaptor

比 EchoAdaptor 更高级的版本,以彩色和更好的默认格式输出日志。

  • __construct($minimumLevel = LogLevel::DEBUG)

  • setTextColor($levels, $color) - 设置日志级别标签中使用的颜色。颜色代码可以通过 Logger\AsciiCodes 类访问。$levels 可以是一个字符串,用于单个日志级别,或是一个级别的数组。

###FileAdaptor

将日志保存到文件。

  • __construct($file, $minimumLevel = LogLevel::DEBUG)

  • setLogLevelFile($levels, $filename) - 将特定日志级别保存到单独的文件。例如:fileLogLevels(['emergancy', 'alert'], 'the_world_is_ending.log');

  • getLogLevelFiles() - 返回当前级别的当前文件名数组。数组以不同的日志级别为键。空值表示使用默认文件。

  • separateLogFiles($ext = '.txt') - 将所有日志级别分离到各自的文件中。$ext 是日志文件的文件扩展名。

  • setDefaultFile($filename) - 如果未通过 fileLogLevels() 定义特定文件,则设置默认文件。构造函数使用提供的文件名调用此方法。

  • getDefaultFile() - 返回当前默认文件。

###ChromeLoggerAdaptor

通过 Chrome Logger 扩展将日志发送到 Chrome。网站:Chrome Logger

  • logBacktrace($onoff) - 在日志中记录堆栈跟踪(文件、行号)。默认:true

占位符

某些适配器允许在制作日志时使用自定义的字符串模式。当此功能可用时,可以使用一些占位符。占位符是区分大小写的。

  • {level} - 全小写的日志级别
  • {levelU} - 全大写的日志级别
  • {message} - 日志消息或对象的格式化字符串
  • {date} - 日志的日期时间

许可证

OSLogger 根据 BSD 3-Clause 许可协议发布。完整的许可证文本可在 LICENSE.md 文件中找到。

版本控制

为了透明度以及努力保持向后兼容性,此库按照语义版本控制指南进行维护。有时我们可能会出错,但我们将尽可能遵守这些规则。

版本号将以以下格式编号

<主要>.<次要>.<补丁>

并遵循以下指南

  • 破坏向后兼容性 增加主要版本 并重置次要和补丁版本
  • 没有破坏向后兼容性的新功能 增加次要版本 并重置补丁版本
  • 错误修复和其他更改 仅增加补丁版本

有关 SemVer 的更多信息,请访问 http://semver.org/