2011-09-30 5 views
0

내 응용 프로그램 로깅의 대부분은 sf 1.4에서 symfony 자체에서 사용하지 않았기 때문에 디버그 레벨에서 수행됩니다. 이는 사용하고자하는 메시지를 쉽게 볼 수있게합니다 뭔가 같은 : 내가 거기는 과거를 스크롤보고 앉아 있었던거야 동안symfony 1.4의 파일에만 디버그 레벨 메시지 기록하기

tail -f log/frontend_dev.php | grep "\[debug\]" 

이 dev에 환경에서 매우 중요하지만, 지금은 생산 환경에서 이 디버그 메시지를 기록합니다.

프로덕션 로그의 로그 수준을 디버그로 설정하면 분명히 너무 많은 데이터 인 디버그 수준을 비롯하여 모든 항목을 가져올 수 있습니다.

[디버그] 메시지 만 기록하는 로거를 작성할 수 있습니까? 물론

답변

2

것이 가능하다 - 당신은 log($message, $priority) 기능을 sfFileLogger를 확장하고 재정의 할 수 있습니다 (이 sfLogger 클래스 sfFileLogger 상속).

prod: 
    logger: 
    class: sfAggregateLogger 
    param: 
     level: DEBUG 
     loggers: 
     sf_file_debug: 
      class: myDebugOnlyLoggerClass 
      param: 
      level: DEBUG 
      file: %SF_LOG_DIR%/%SF_APP%_%SF_ENVIRONMENT%.log 

이 로거가 동일한 우선 순위로 기록 된 메시지 만 저장됩니다 (단 :

... 
public function log($message, $priority = self::DEBUG) 
{ 
    if ($this->getLogLevel() != $priority) 
    { 
    return false; 
    } 

    return $this->doLog($message, $priority); 
} 
... 

지금 당신의 새로운 로거 클래스를 사용하는 앱에서 로깅을 구성해야 구성 app/<your app>/config/factories.yml에 위치 동일하거나 그 이상이 아님) factories.yml에 구성된 것과 같습니다.

+0

이 페이지에 대한 향후 방문자를 위해 수정할 수있는 작은 오타가 있습니다. '=='보다는 '! ='가되어야하지만, 내가 필요로하는 것과는 다른 것입니다. –

+0

좋아, 나는 그것을 서둘러 썼고 코드를 제대로 테스트하지 못했다. 이제는 괜찮을 것이다. – akloboucnik

관련 문제