질문을 삭제하지 말아주세요.!
 
1
0
-1


laravel 로깅 관련 하여 전문가 분들의 의견을 문의 드립니다.

  1. 아래와 같이 로그를 비교적 Detail 하게 남기고 싶은데요. 
    --------------------------------------------------------------------
    Log::info('['
     . Session::get("username") . ']'
    . 'restore@TrashProductController : ['
    . 'TrashProduct not exist on Product Table.' . '['
    . 'Product ID : '
    . $product->id . ']');

    ----------------------------------------------------------------------


    로그를 남길때 코드가 지저분해 지는것같아 logging($id, $component, $message, $resource, $resource_id)
    요런 함수를 만드는게 낳을 까요? 아니면 그냥 위화 같이 모드마다 찍어주는 것이 낳을까요?

     2. 만약 함수를 만든다면 어떤 방식으로 만드는 것이 낳을까요? Trait, Helper 함수 혹은 DI(Dependency Injection) 등등

     3. 그리고 라라벨 로그레벨을 error 로 지정하면 info 로 남긴 로그는 당연히 로그파일에 기록이 안되겠지요?

 

    감사합니다. 

    CommentAdd your comment...

    2 answers

    1.  
      1
      0
      -1

      예외 처리:

      http://blog.appkr.kr/work-n-play/understanding-php-exception-class/
      http://blog.appkr.kr/work-n-play/understanding-php-exception-class-part-2/

      로거 활용:

      http://blog.appkr.kr/work-n-play/php-application-logging-to-elasticsearch-using-monolog/

      로깅 포매팅:

      public function main()
      {
          // ...
          \Log::info(
              $this->serialize($object->toArray())
          );
      }
      
      private function serialize(array $data)
      {
          return json_encode($data,
              JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT);    
      }


      마지막으로 Request/Response를 모두 로그에 남기고 싶다면 미들웨어를 만들면 편리합니다.

      1. dangtong

        감사합니다.!! 많은 도움 되었습니다.

      CommentAdd your comment...
    2.  
      1
      0
      -1
      1. 그상태가 낫다고 생각합니다. 
      2. 함수를 만들지 말고, 로깅인터페이스를 지원하는 커스텀 로거를 만드는 편이 나을것 같습니다. 이경우, trait/helper나 di 보다는 ioc에 가깝지 않나 싶습니다. 
      3. error 레벨일 경우 info는 남지 않을것이 당연하겠죠^^


      일단 간단한 답변을 드리고...ㅎㅎ

      로깅을 통해 정보를 쌓는 것이라면 정보를 활용하는것 같고, 차라리 파일이나 디비에 필요한 정보를 활용가능하게 쌓는게 나을수도 있습니다. 

      로그는 왜 쌓아야만 하는가? 에 대해 생각해 보고, 꼭 필요한 경우라면 컨트롤러 바깥에서 Request를 분석해서 point cut 하는것도 고려해 볼수 있습니다. 

      또, 매요청 혹은 특정 패턴마다 발생한다면, 이벤트로 구분해서 이 정보를 넘기고 이벤트 안에서 로깅한다면 의미를 부여해서 향후 다른 처리에 유용하게 변경 가능할 것 같구요. 

      3 번 질문을 볼 때 , 혹시모를 디버깅을 위해서 라고 추론되는데요, 그래서 임시적인 확인 등을 고려하면 나중에 없앨 코드라 생각해서 1 번 그대로 안예쁜 코드가 나을것 같다고 의견 드렸습니다(smile)


      질문과 무관하지만, 왜 로그를 남기지 않으면 안되는 것인가? 에 대해 되짚어 보면 불안함 혹은 습관이었던 경우가 많아서 화두를 던져봅니다. 

      1. dangtong

        로그에 대해 다시한번 생각하게 되었습니다.

        감사합니다.

      CommentAdd your comment...