silinternational/yii2-json-log-targets

一组将日志消息格式化为JSON字符串的Yii2日志目标。

2.1.0 2022-08-30 13:18 UTC

This package is auto-updated.

Last update: 2024-09-17 20:02:25 UTC


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文件)。