Yii2自定义日志前缀

在 Yii2 中,log 组件使用了不同的 log target(如 file, db 等)来记录日志。每个日志条目可以设置一个 prefix,用于区分不同的日志信息来源。

增加 prefix 的方法

可以通过配置文件或者自定义类来全局设置日志的 prefix

方法一:通过配置文件设置 prefix

你可以在 config/web.phpconfig/main.php 中配置 log 组件的 targets 部分,添加的 prefix

1. 修改配置文件 config/web.phpconfig/main.php

return [
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'yii\log\FileTarget',
                    'logFile' => '@runtime/logs/app.log',
                    'levels' => ['error', 'warning'],
                    'prefix' => function ($message) {
                        // 设置自定义的全局 prefix
                        return '[GlobalPrefix] ' . Yii::$app->id . ' ';
                    },
                ],
            ],
        ],
    ],
];

在上面的配置中,prefix 是一个匿名函数,返回你想要的 prefix。可以使用 Yii2 的各种信息(如 Yii::$app->id, Yii::$app->user->id 等)来定制这个 prefix

2. 日志输出的格式:

这会在日志文件的每一条记录前面加上 [GlobalPrefix] 应用ID,从而实现全局 prefix 的效果。

方法二:通过自定义日志目标类增加 prefix

如果你需要在多个日志目标中使用相同的全局 prefix,可以通过继承 yii\log\Target 来创建一个自定义的日志目标类。

1. 创建自定义的日志目标类

首先,创建一个继承自 yii\log\FileTarget 或其他日志目标的类,并重写 getMessagePrefix() 方法:

namespace app\components;

use yii\log\FileTarget;

class CustomLogTarget extends FileTarget
{
    // 重写 getMessagePrefix() 方法,设置全局前缀
    public function getMessagePrefix($message)
    {
        // 这里可以自定义 prefix 内容
        return '[GlobalPrefix] ' . Yii::$app->id . ' ';
    }
}

2. 修改配置文件使用自定义日志目标

config/web.phpconfig/main.php 中配置日志组件,使用你自定义的 CustomLogTarget

return [
    'components' => [
        'log' => [
            'targets' => [
                [
                    'class' => 'app\components\CustomLogTarget',
                    'logFile' => '@runtime/logs/custom_app.log',
                    'levels' => ['error', 'warning'],
                ],
            ],
        ],
    ],
];

3. 日志输出的格式:

这样所有使用 CustomLogTarget 的日志目标都会包含自定义的全局 prefix,而不需要为每一个目标单独设置。

总结

  • 方法一:通过在配置文件中为每个 log target 手动设置 prefix,适合简单的场景。
  • 方法二:通过继承日志目标类重写 getMessagePrefix() 方法,适合需要大量使用相同 prefix 或需要复用逻辑的场景。
posted @ 2024-09-13 14:45  闲云-野鹤  阅读(26)  评论(0编辑  收藏  举报