【问题标题】:How to create multiple log files in laravel?如何在 laravel 中创建多个日志文件?
【发布时间】:2021-08-30 22:42:31
【问题描述】:

像状态本身一样,我想为不同的进程创建多个日志文件。 我正在使用 Laravel-8。 我还借助 config 文件夹中的 logging.php 创建了 1 个日志记录文件。

我想用自己单独的日志文件来跟踪我创建的命令。

如何为这些命令创建单独的日志文件?

我通过每天只有一个日志来做到这一点。 "config/logging.php"

'channels' => [
    'stack' => [
        'driver' => 'stack',
        'channels' => ['daily'],
        'ignore_exceptions' => false,
    ]...,
 ]

【问题讨论】:

    标签: laravel


    【解决方案1】:

    以下代码将生成自定义日志文件。

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

    希望这会有用。

    【讨论】:

      【解决方案2】:

      您应该使用config/logging.php 为每个命令创建自定义通道 例如

          'CHANNEL_NAME' => [
              'driver' => 'single',
              'path' => storage_path('logs/LOG_FILE_NAME.log'),
              'level' => 'DESIRED_LEVEL', 
          ],
      

      并根据需要更改 CHANNEL_NAMELOG_FILE_NAMEDESIRED_LEVEL 值。

      注意: 'level' => 'DESIRED_LEVEL' 是可选的。它可以是单层或levels (laravel v8.x) 的数组。

      然后当你想在你的命令类中记录任何东西时,像下面的代码一样记录

      用法:

          Log::channel('CHANNEL_NAME')
              ->info('Something happened!');
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-07-16
        • 1970-01-01
        • 2019-01-03
        • 2016-01-27
        • 1970-01-01
        • 2021-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多