snakano / cakephp-monolog
CakePHP Monolog 插件
2.1.0
2020-03-30 10:06 UTC
Requires
- php: >=5.3.0
- composer/installers: *
- monolog/monolog: 1.*
README
尽管 CakePHP 提供了非常先进的日志系统,但我仍然需要编写大量代码才能按照所需的方式处理日志。为了编写尽可能少的代码,我选择了流行的 monolog 库。
DatadogProcessor
会附加 Datadog APM 跟踪 ID 和 Span ID。此处理器会自动将标识符附加到所有日志消息中。请参阅: https://docs.datadoghq.com/tracing/advanced/connect_logs_and_traces/?tab=php
安装
由于 monolog 是一个 composer 包,并且为了避免手动编写大量包含(与自动加载相比),我决定也将其作为 composer 包发布,并利用自动加载的魔法。
首先,将此插件作为需求添加到您的 composer.json
{
"repositories": [
{
"type": "vcs",
"url": "https://github.com/SNakano/cakephp-monolog"
}
],
"require": {
"snakano/monolog": "dev-master"
}
}
然后更新
php composer.phar update
就这样!现在您应该准备好开始配置您的通道了。
配置
首先创建一个日志配置文件(例如,app/Config/log.php
),您将在 app/Config/bootstrap.php
中早期包含它
include 'log.php';
一个基本的配置,用于复制 Cake 所做的操作但使用 Monolog(以提供一个良好的起始示例),看起来可能如下所示
require VENDORS . 'autoload.php';
App::build([
'Plugin' => [ROOT . DS . 'Plugin' . DS]
]);
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 . 'application.log',
30
),
'Stream' => array(
LOGS . 'logstash.log',
'formatters' => array(
'Line' => array("%datetime% %channel% %level_name%: %message%\n")
),
'processors' => array(
'DatadogProcessor' => array(
'search' => CakePlugin::path('Monolog') . 'Lib' . DS . 'Log' . DS . 'Processor'
),
'MemoryUsage' => array(),
'Web' => array()
)
),
'CakeEmail' => array(
'admin@domain.com',
'ALERT: APPLICATION REQUIRES IMMEDIATE ATTENTION.',
'default'
)
)
));