oasis / logging
monolog/monolog 的包装器。应该比 monolog 更容易使用/配置
Requires
- bramus/monolog-colored-line-formatter: ^2.0
- monolog/monolog: ^1.17
- oasis/utils: ^1.6
Requires (Dev)
- phpunit/phpunit: ^5.1
- symfony/console: ^3.0
- symfony/finder: ^3.0
Suggests
- oasis/aws-wrappers: ^2.7
- symfony/console: ^3.0
README
oasis/logging 提供用于写入日志的类和函数。
该组件可以简称为 MLog 或 MLogger。
默认提供了一系列日志处理器
- 控制台处理器
- 本地文件处理器
- 本地错误处理器
- AWS SNS 处理器
MLog 严格遵守 PSR-3 标准,并使用 monolog/monolog 作为其底层实现。
安装
使用以下命令安装最新版本
$ composer require oasis/logging
基本用法
MLogger 可以不进行任何配置即可使用
<?php // quick logging methods as global functions mdebug("This is a debug message"); minfo("This is a info-level log message"); mnotice("Notice is also available"); mwarning("WARNING: something is possibly wrong!"); merror("ERROR: something is definitely wrong!"); mcritical("This is CRITICAL!"); malert("ALERT! ALERT!"); memergency("URGENT!"); // sprintf compatible logging $name = 'test'; mdebug("The object %s is being processed", $name);
直接使用 Logger
Monolog\Logger
可以直接使用。这提供了将 MLog 与其他需要日志工具的 PSR-3 兼容组件集成的自由。
<?php use Monolog\Logger as MonoLogger; use Oasis\Mlib\Logging\MLogging; /** @var MonoLogger $logger */ $logger = MLogging::getLogger(); // the $logger object can then be injected into any place in need of a MonoLogger
添加处理器
多亏了 monolog/monolog 的成熟社区,MLog 可以利用所有现有的 monolog 处理器。
此外,您还可以编写自己的处理器,该处理器实现了 Monolog\Handler\HandlerInterface
接口。
向 MLog 添加处理器非常简单
<?php use Oasis\Mlib\Logging\ConsoleHandler; use Oasis\Mlib\Logging\LocalFileHandler; use Oasis\Mlib\Logging\MLogging; MLogging::addHandler(new ConsoleHandler()); // or (new LocalFileHandler())->install();
使用自动轮换时间戳的文件处理器
Oasis\Mlib\Logging\LocalFileHandler
可以轻松配置,根据时间变化轮换其文件名。如果您是一个运行时间超过几秒钟的长脚本,这将非常有用。只要提供正确的名称模式,本地文件名就会在预设间隔过去时旋转。以下是一个示例
<?php use Oasis\Mlib\Logging\LocalFileHandler; $lfh = new LocalFileHandler('/my-log-path', '%date%/%hour%-%minute%-%script%.log'); // This tells the filename to rotate every 30 minutes $lfh->setRefreshRate(1800);
支持的名字模式如下
| 模式 | 含义 | |:--- |: ---| %date% | 替换为当前日期,格式为:yyyymmdd %hour% | 替换为当前小时,格式为:HH (00-23) %minute% | 替换为当前分钟,格式为:ii (00-59) %second% | 替换为当前秒,格式为:ss (00-59) %script% | 替换为当前脚本的名称,仅文件名,不带目录名 %pid% | 替换为当前进程 ID
使用 AWS SNS 自动处理警报
Oasis\Mlib\Logging\AwsSnsHandler
提供了一个处理器,仅当日志级别高于一定级别(默认为 ALERT)时才会处理。
在生产环境中,这是一个非常有用的工具。它缓冲所有日志,如果脚本在没有错误的情况下退出,则丢弃它们。如果出现致命错误等异常情况导致脚本退出,处理器会将所有缓冲日志以及一个 ALERT 日志发布到指定的 AWS SNS 主题。
AwsSnsHandler 是一个可选功能,它依赖于 oasis/aws-wrappers 组件
$ composer require oasis/aws-wrappers
要使用 AwsSnsHandler,请尝试以下代码
<?php use Oasis\Mlib\Logging\AwsSnsHandler; use Oasis\Mlib\AwsWrappers\SnsPublisher; /** @var string $the_topic_arn the topic's AWS Resource Name */ /** @var array $some_aws_config config data to initialize an Sns Publisher */ $publisher = new SnsPublisher($some_aws_config, $the_topic_arn); $snsHandler = new AwsSnsHandler($publisher, 'This is the subject'); $snsHandler->enableAutoPublishingOnFatalError(); $snsHandler->install();