在我的yii2应用程序中,后端有两个模块,我必须为每个模块创建不同的文件夹/文件名,如下所示
@app/runtime/logs/{my_module_name}/app.log
或
@app/runtime/logs/{my_module_name}.log
我怎样才能实现这一目标?
答案 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方法中创建它。