Как создать несколько файлов журналов в laravel?

#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()]);
    }
 

Надеюсь, это будет полезно.