Reputation: 1674
In my yii2 application there is two modules in the backend, I have to create different folders/file name for each modules like as follows
@app/runtime/logs/{my_module_name}/app.log
or
@app/runtime/logs/{my_module_name}.log
How can I achieve that ?
Upvotes: 0
Views: 588
Reputation: 553
For this purpose you can override yii\log\FileTarget.
Our custom Logger:
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;
}
}
Register the Logger in common/config/main.php:
return [
'log' => [
'traceLevel' => YII_DEBUG ? 3 : 0,
'targets' => [
[
'class' => 'common\components\CustomLogger',
'levels' => ['error','warning']
]
]
]
];
Usage:
$logger = Yii::getLogger();
$logger->setLogFile('path/to/log/file.log')->log('some message', Logger::LEVEL_ERROR)
Also you can check if $logFile is not exist you can create it inside setLogFile method.
Upvotes: 1