jadb/cakephp-monolog

CakePHP Monolog 插件

安装数: 14,038

依赖关系: 0

建议者: 0

安全性: 0

星标: 55

关注者: 4

分支: 15

开放问题: 2

类型:cakephp-plugin

2.0.0 2014-08-04 14:44 UTC

This package is auto-updated.

Last update: 2024-08-28 00:56:09 UTC


README

Build Status

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 仓库。如果您阅读这篇文档时它还没有被合并,请使用我的 分支