Laravel 로 그 를 다시 써 서 로 그 를 더욱 우아 하 게 만 들 었 습 니 다.

변경 목적:
  • 로그 형식 을 다시 썼 습 니 다
  • 가입trace,한 번 요청 한 유일한 표지
  • 가입error등급 정보 푸 시,사례 중 기업 위 챗 그룹 어시스턴트 사용
  • 우 리 는 로그 정 보 를 더욱 신속 하고 우아 하 며 쉽게 추적 할 수 있 습 니 다
  • 초보 자 들 이 Laravel 프레임 워 크 를 이해 하 는 데 도움 이 된다
  • 1。파일AppTool.php,Logger.php,LogServiceProvider.phpapp/Providers폴 더 에 복사 하고 파일BaseCommand.phpApp\Console아래로 복사 합 니 다.
    2 。config/app.php→providers에 가입
    
    'providers' => [
     ……
     //     
      App\Providers\LogServiceProvider::class
     ……
     ];
    3。프로젝트 에서 다음 과 같은 방식 으로 호출 합 니 다.
    
    // php-fpm          /opt/logs/xxx.log /opt/logs/xxx.error
    \Log::info("info");
    \Log::debug("debug");
    \Log::error("error");
    //  cli          /opt/clogs/xxx.log /opt/clogs/xxx.error
    app('cLog')->info("info");
    app('cLog')->debug("debug");
    app('cLog')->error("error");
    4。로그 등급error시 푸 시 를 수행 하 며,본 사례 에 서 는 기업 위 챗 그룹 푸 시 를 적용 한다.
    
      /**
       *       
       * @param $message
       */
      public function pushErrorMessage($message)
      {
        $content = "app:". static::getAppName() ." 
    src: ". static::getRequestSource() ."
    trace:". self::getTrace() ."
    url:". static::$uri_info ." 
    error: ". $message ."
    time:". date("Y-m-d H:i:s");
        //    
        $url = "xxxxxxxxxxxx";
        $result = app('\GuzzleHttp\Client')->request('POST', $url, [
          \GuzzleHttp\RequestOptions::JSON=>[
            "msgtype"=> "text",
            "text"=> [
              "content" => $content
            ]
          ]
        ]);
        $body = \GuzzleHttp\json_decode($result->getBody()->getContents(), true);
      }
    5 。로그 내용
    주의사항:
    다음 코드 를 수정 하면 버 전 별로 bind 부분 이 다 를 수 있 습 니 다.구체 적 으로\Illuminate\Foundation\Application::registerCoreContainerAliases에서log정보 에 따라 수정 합 니 다.
    예 를 들 어 laravel 6.x 중'log' => [\Illuminate\Log\LogManager::class, \Psr\Log\LoggerInterface::class],,
    수정 방식 은 아래 코드 와 같 습 니 다.
    
        ……
        //       
        $app->instance('Log', $logger);
        $app->bind('Psr\Log\LoggerInterface', function (Application $app) {
          return $app['log']->getLogger();
        });
        $app->bind('\Illuminate\Log\LogManager', function (Application $app) {
          return $app['log'];
        });
        ……
    console 에서 사용 할 때 재 작성\Illuminate\Console\Command::info,\Illuminate\Console\Command::line,\Illuminate\Console\Command::error을 권장 합 니 다.그리고 모든 console 은 BaseCommand 를 계승 합 니 다.
    demo 코드 블록:
    
    use App\Console\BaseCommand;
    
    class Demo extends BaseCommand
    {
      protected $signature = 'command:demo';
      protected $description = 'demo';
      public function __construct()
      {
        parent::__construct();
      }
      public function handle()
      {
        $this->info('this is info!');
        $this->line('this is line!');
        $this->error('this is error!!!');
      }
    }
    demo 명령 행 출력:

    Laravel 재 작성 로그 에 관 한 이 글 은 로 그 를 더욱 우아 하 게 만 드 는 글 을 소개 합 니 다.더 많은 Laravel 재 작성 로그 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 도 많은 응원 부 탁 드 리 겠 습 니 다!

    좋은 웹페이지 즐겨찾기