#laravel
Вопрос:
Как и само государство, я хочу создать несколько файлов журналов для разных процессов. Я использую Laravel-8. Я также создал файл журнала 1 с помощью logging.php в папке конфигурации.
Я хочу отслеживать созданные мной команды с помощью их собственного отдельного файла журнала.
Как я могу создать свой отдельный файл журнала для этих команд?
Я сделал это, имея только дневник на каждый день. «config/logging.php»
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['daily'],
'ignore_exceptions' => false,
]...,
]
Ответ №1:
Вы должны использовать config/logging.php
для создания пользовательского канала для каждой команды, например
'CHANNEL_NAME' => [
'driver' => 'single',
'path' => storage_path('logs/LOG_FILE_NAME.log'),
'level' => 'DESIRED_LEVEL',
],
и меняйтесь CHANNEL_NAME
, LOG_FILE_NAME
и DESIRED_LEVEL
цените так, как вам хочется.
Примечание: 'level' => 'DESIRED_LEVEL'
не является обязательным. это может быть один уровень или множество уровней (laravel v8.x).
Затем, когда вы хотите зарегистрировать что-либо в своем командном классе, войдите в систему, как в следующем коде
Использование:
Log::channel('CHANNEL_NAME')
->info('Something happened!');
Ответ №2:
Приведенный ниже код создаст пользовательский файл журнала.
try{
//Your code here
}catch(Exception $e){
$cusLog = new Logger('stack');
$err_file_name = $task_id."_".time();
$syncHistory['file_name'] = $err_file_name;
$cusLog->pushHandler(new StreamHandler(storage_path('logs/'.$err_file_name.'.log')), Logger::INFO);
$cusLog->info('error', ['Exception'=>$e->getTraceAsString(),'message'=>$e->getMessage()]);
}
Надеюсь, это будет полезно.