使用 FileTarget 后如何记录错误

How to log errors once using FileTarget

我使用 Yii 组件“log”来记录一些重要信息。在我的目标中:

[
    'class' => FileTarget::class,
    'categories' => ['import.category'],
    'levels' => ['info', 'warning', 'error'],
    'logFile' => '@runtime/logs/import/import.log',
    'maxFileSize' => 10240,
    'logVars' => []
]

我是这样调用记录器的:

Yii::warning('some message', 'import.category');

我在logs/import/import.log 中有记录。那很好。但是我在 logs/app.log 中有相同的记录。 我不需要 logs/app.log 中的记录。这是默认的吗?我可以关掉它吗?

顺便说一句,如果我使用:

Yii::info('some message', 'import.category');

我只在 logs/import/import.log 中有记录,但错误或警告重复记录。

您的 app.log 目标的配置可能如下所示:

[
    'class' => 'yii\log\FileTarget',
    'levels' => ['error', 'warning'],
    'logFile' => '@runtime/logs/app.log',
],

因为没有指定类别,所以所有错误和警告消息都写在那里。要从登录目标中排除类别,yii\log\Target 中有 $except 属性,这是日志目标的公共父级。因此,您想像这样修改 app.log 目标的设置:

[
    'class' => 'yii\log\FileTarget',
    'levels' => ['error', 'warning'],
    'logFile' => '@runtime/logs/app.log',
    'except' => ['import.category'],
],