Yii2 - 如何从日志文件中删除不必要的信息?
Yii2 - How can I remove unnecessary information from log file?
我正在尝试在 Yii2 中记录消息,然后将这些消息通过电子邮件发送到我指定的电子邮件地址。
配置文件 web.php
包含:
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
我正在记录这样的消息:
Yii::info('Log message example','mail');
执行成功后,我收到的邮件是这样的:
2018-07-31 09:01:12 [127.0.0.1][user@example.com][-][info][mail] Log message example
所以我想做的是从这些消息中删除不需要的信息,如 IP 地址、用户名等,最后我想要的是
2018-07-31 09:01:12 Log message example
您可以通过设置 prefix
属性:
从日志中删除前三部分
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'prefix' => function () {
return '';
},
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
最后两部分(级别和类别)是硬编码的,您需要扩展 EmailTarget
并覆盖 formatMessage()
以删除它们。
您可以在配置文件 web.php
或代码中进行设置。
Yii::$app->log->targets['test']->prefix = function (){
return null;
};
或
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'prefix' => function () {
return null;
},
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
我正在尝试在 Yii2 中记录消息,然后将这些消息通过电子邮件发送到我指定的电子邮件地址。
配置文件 web.php
包含:
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
我正在记录这样的消息:
Yii::info('Log message example','mail');
执行成功后,我收到的邮件是这样的:
2018-07-31 09:01:12 [127.0.0.1][user@example.com][-][info][mail] Log message example
所以我想做的是从这些消息中删除不需要的信息,如 IP 地址、用户名等,最后我想要的是
2018-07-31 09:01:12 Log message example
您可以通过设置 prefix
属性:
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'prefix' => function () {
return '';
},
'mailer' => 'mailer',
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],
最后两部分(级别和类别)是硬编码的,您需要扩展 EmailTarget
并覆盖 formatMessage()
以删除它们。
您可以在配置文件 web.php
或代码中进行设置。
Yii::$app->log->targets['test']->prefix = function (){
return null;
};
或
'mail' => [
'class' => 'yii\log\EmailTarget',
'categories' => ['mail'],
'logVars' => [],
'mailer' => 'mailer',
'prefix' => function () {
return null;
},
'message' => [
'from' => ['user@example.com'],
'to' => ['user1@example.com'],
'subject' => 'Log message',
],
],