jadb / cakephp-monolog
CakePHP Monolog 插件
2.0.0
2014-08-04 14:44 UTC
Requires
- php: >=5.3.0
- composer/installers: *
- monolog/monolog: 1.7.*
README
CakePHP Monolog 插件
尽管 CakePHP 提供了非常先进的日志系统,我仍然需要编写大量代码才能按照我的需求处理日志。为了编写尽可能少的代码,我选择使用流行的 monolog 库。
注意 包名已更改为 jadb/cakephp-monolog,以避免违反 cakephp 命名空间。
安装
由于 monolog 是一个 composer 包,并且为了避免手动编写大量包含(与自动加载相比),我决定也将此作为 composer 包发布,并利用自动加载的魔法。
首先,将此插件作为需求添加到您的 composer.json
{
"require": {
"cakephp/monolog": "*"
}
}
然后更新
php composer.phar update
就这样!现在您应该准备好开始配置您的通道。
配置
首先创建一个日志配置文件(例如 app/Config/log.php
),然后在您的 app/Config/bootstrap.php
中尽早包含它。
include 'log.php';
一个基本的配置,为了复制 Cake 的功能但使用 Monolog(提供一个好的起始示例),可能看起来像这样
CakePlugin::load('Monolog');
CakeLog::config('debug', array(
'engine' => 'Monolog.Monolog',
'channel' => 'app',
'handlers' => array(
'Stream' => array(
LOGS . 'debug.log',
'formatters' => array(
'Line' => array("%datetime% %channel% %level_name%: %message%\n")
)
)
)
));
注意,在 CakePHP 版本 < 2.4 中,引擎名称应该是 Monolog.MonologLog
。
简单吗?但是,让我们真正做一些严肃的日志记录,否则为什么要离开默认的 CakePHP 日志 系统?
以下示例显示了如何设置
- 保留 30 天的轮转日志,由 logstash 可读,并包含内存峰值使用信息
- 带有更多请求详细信息的常规日志文件
- 对严重和警报级别的电子邮件通知,仅包括错误消息
CakeLog::config('logstash', array(
'engine' => 'Monolog.Monolog',
'channel' => 'app',
'handlers' => array(
'RotatingFile' => array(
LOGS . 'logstash.log',
30,
'formatters' => array(
'Logstash' => array('web', env('SERVER_ADDR'))
),
'processors' => array('MemoryPeakUsage')
),
'Stream' => array(
LOGS . 'logstash.log',
'formatters' => array(
'Line' => array("%datetime% %channel% %level_name%: %message% %context% %extra%\n")
),
'processors' => array('MemoryUsage', 'Web')
),
'CakeEmail' => array(
'admin@domain.com',
'ALERT: APPLICATION REQUIRES IMMEDIATE ATTENTION.',
'default'
)
)
));
今天已经将 CakeEmailHandler
提交给主 monolog 仓库。如果您阅读这篇文档时它还没有被合并,请使用我的 分支。