onesimus-systems / oslogger
简单、模块化、PSR-3 兼容的日志库。
Requires
- php: >=5.3.0
- psr/log: ~1.0
Requires (Dev)
- phpunit/phpunit: 4.7.*
README
OSLogger 是一个 PSR3 兼容的模块化日志记录器。它通过适配器允许使用多个日志目标。
要求
- PHP >= 5.3.0
特性
- 快速简单的设置
- PSR-3 兼容
- 多个适配器
- 文件
- 控制台
- 输出
- 空
- Chrome 日志记录器
- 为适配器设置最小和最大处理的日志级别
用法
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
- E_USER_ERROR, E_RECOVERABLE_ERROR 是
注意:如果函数 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/。