如何为Yii2中的不同模块创建不同的日志文件夹

时间:2017-12-13 12:35:53

标签: php yii2 yii2-advanced-app yii2-basic-app

在我的yii2应用程序中,后端有两个模块,我必须为每个模块创建不同的文件夹/文件名,如下所示

@app/runtime/logs/{my_module_name}/app.log 

@app/runtime/logs/{my_module_name}.log

我怎样才能实现这一目标?

1 个答案:

答案 0 :(得分:1)

  

为此,您可以覆盖yii \ log \ FileTarget。

我们的自定义记录器:     

use yii\log\FileTarget;

/**
* Class CustomLogger
* @package common\components
*/
class CustomLogger extends FileTarget
{
    /**
    * @param $logFile
    * @return $this
    */
    public function setLogFile($logFile)
    {
        $this->logFile = $logFile;

        return $this;
    }
}

在common / config / main.php中注册Logger:

return [
    'log' => [
        'traceLevel' => YII_DEBUG ? 3 : 0,
        'targets' => [
            [
                'class'  => 'common\components\CustomLogger',
                'levels' => ['error','warning']
            ]
        ]
    ]
];

<强>用法:

$logger = Yii::getLogger();
$logger->setLogFile('path/to/log/file.log')->log('some message', Logger::LEVEL_ERROR)

您还可以检查$ logFile是否存在,您可以在setLogFile方法中创建它。