이 질문에는 두 가지 부분이있는 것으로 보이지만이 부분이이 문제를 다루고 있다고 생각합니다. Log4perl을 설정하여 오류를 기록하는 것이 더 중요하지만 Catalyst 및 Plack 고려 사항이 있습니다.
log4perl.logger = DEBUG, FileAppndr, Screen, DebugPanel
log4perl.appender.FileAppndr = Log::Log4perl::Appender::File
log4perl.appender.FileAppndr.filename = log/server.log
log4perl.appender.FileAppndr.autoflush = 1
log4perl.appender.FileAppndr.stderr = 1
log4perl.appender.FileAppndr.layout = PatternLayout
log4perl.appender.FileAppndr.layout.ConversionPattern=%d [%p] - %m%n
log4perl.appender.Screen = Log::Log4perl::Appender::Screen
log4perl.appender.Screen.stderr = 1
log4perl.appender.Screen.autoflush = 1
log4perl.appender.Screen.layout = PatternLayout
log4perl.appender.Screen.layout.ConversionPattern=%d [%p] - %m%n
주 1
거기에 stderr
값의 포함 :
먼저, 여기에 내가 가진 것이 일반적인 log4perl의 구성 설정 될 것입니다. 따라서 log4perl에 로깅을 위해 stderr
을 캡처하도록 지시합니다.
Catalyst 측에서는 실제로 컨텍스트에 대한 사용자 정의 init 코드가 있지만 기본적으로 두 가지 설정이 있습니다.
- 는
$c->log
로드 PSGI 미들웨어 Plack::Middleware::Log4perl 통해 본질적 Log::Log4perl::Catalyst하는 문맥 로거를 설정한다. 실제로 촉매 구성을로드 할 때 psgi_middleware
구성 키를 통해이 작업을 수행합니다. 그래서 "Plack :: Middleware"컨텍스트 경로에 모든 것이 이미 있기 때문에 "Log4perl"보다 설정 라인에 더 많은 것이 없습니다.
두 번째 부분이 것 "픽업"로드 "log4perl"예를 필요에 따라 어떤 PSGI 구성 요소는 다음 로거에 액세스 할 수 있도록하는 psgi.logger
에 할당합니다.
그럼, 이와 같은 코드에서 "다시 던져"입니다 이후 문 :
my $e = HTTP::Exception->new(404);
$e->status_message("BOOM!!");
$e->throw;
실제로뿐만 아니라에서 "log4perl"출력에 어떤 원시 die
문을 집어 될 것입니다.
적어도 Catalyst 5.90060 이상의 경우입니다. HTTP :: Exception 타입 클래스에 관해서 추가되고 싶다면 여전히 좋은 점이 몇 가지있다.
안녕하세요 닐, 어쨌든 그건 내 문제를 해결하지 못했습니다. Logger 컨텍스트 설정과 관련하여 설명서가 나오고 Catalyst 응용 프로그램이 이미 작동 한 것처럼 보이지만 psgi_middleware 구성의 Log4perl을 설정하면 추가 로깅이 생성되지 않습니다. 미들웨어 기능을 포함하지 않는 또 다른 해결 방법을 게시했지만 미들웨어 또는 촉매 옵션을 정의하여 문제를 해결하는 데 여전히 관심이 있습니다. –
@deviolog 나는 "기여 문서"에 실제로 쓴 코드 이외의 "문서화"에 대해 확신하지 못합니다. 그래서 나는 그것이 실제로 옳다고 생각할 것입니다. –