silinternational / yii2-json-log-targets
一组将日志消息格式化为JSON字符串的Yii2日志目标。
2.1.0
2022-08-30 13:18 UTC
Requires
- php: >=5.6
- yiisoft/yii2: ^2.0
Requires (Dev)
- behat/behat: ^3.3
- codemix/yii2-streamlog: ^1.3
- fillup/fake-bower-assets: ^2.0
- phpunit/phpunit: ^8.0
- roave/security-advisories: dev-master
- silinternational/email-service-php-client: ^2.0.0
Suggests
- codemix/yii2-streamlog: To send log to a stream such as stdout using JsonStreamTarget
- silinternational/email-service-php-client: To send log via email using EmailServiceTarget
README
一组将日志消息格式化为JSON字符串的Yii2日志目标。
使用方法
EmailServiceTarget
EmailServiceTarget用于将日志发送到我们的外部Email Service API
注意,此目标可能会抛出Sil\EmailService\Client\EmailServiceClientException异常,应将其排除以避免循环事件。
作为Yii2应用程序配置的一部分
'log' => [ 'targets' => [ [ 'class' => 'Sil\JsonLog\target\EmailServiceTarget', 'levels' => ['error'], 'except' => [ 'Sil\EmailService\Client\EmailServiceClientException', ], 'logVars' => [], // Disable logging of _SERVER, _POST, etc. 'message' => [ 'to' => 'alerts@mydomain.com', 'cc' => 'noc@mydomain.com', // optional 'bcc' => 'bcc@mydomain.com', // optional 'subject' => 'Alert from application', ], 'baseUrl' => 'https://emailservice.mydomain.com', 'accessToken' => 'asdf1234', 'assertValidIp' => true, 'validIpRanges' => ['10.0.10.0/24','127.0.0.1'], 'enabled' => true, ], ], ],
JsonFileTarget
JsonFileTarget与标准FileTarget类似,但它接受消息中的数据数组,并在写入文件之前将其格式化为JSON。
作为Yii2应用程序配置的一部分
'log' => [ 'targets' => [ [ 'class' => 'Sil\JsonLog\target\JsonFileTarget', 'levels' => ['error', 'warning'], 'logVars' => [], // Disable logging of _SERVER, _POST, etc. ], ], ],
JsonSyslogTarget
JsonSyslogTarget与标准SyslogTarget类似,但它接受消息中的数据数组,并在发送到Syslog之前将其格式化为JSON。
作为Yii2应用程序配置的一部分
'log' => [ 'targets' => [ [ 'class' => 'Sil\JsonLog\target\JsonSyslogTarget', 'levels' => ['error', 'warning'], 'except' => [ 'yii\web\HttpException:401', 'yii\web\HttpException:404', ], 'logVars' => [], // Disable logging of _SERVER, _POST, etc. ], ], ],
提示
让日志前缀(如果使用)返回JSON
示例(应放置在您的Yii2配置文件的['components']['log']['targets']
数组中)
[
'class' => 'Sil\JsonLog\target\JsonFileTarget',
'levels' => ['error', 'warning'],
'except' => [
'yii\web\HttpException:401',
'yii\web\HttpException:404',
],
'logVars' => [], // Disable logging of _SERVER, _POST, etc.
'prefix' => function($message) use ($appEnv) {
$prefixData = [
'env' => $appEnv,
];
if ( ! \Yii::$app->user->isGuest) {
$prefixData['user'] = \Yii::$app->user->identity->email;
}
return \yii\helpers\Json::encode($prefixData);
},
],
如果使用syslog发送到Logentries,仅发送JSON内容
请确保您在rsyslog.conf文件中为Logentries定义的模板不会在%msg%
数据之前添加其他内容(除您的Logentries密钥外)。例如,这样做...
$template Logentries,"LOGENTRIESKEY %msg%\n"
... 不要这样做...
$template Logentries,"LOGENTRIESKEY %HOSTNAME% %syslogtag%%msg%\n"
许可证
此软件采用MIT许可证发布(请参阅LICENSE文件)。