2012-01-23 4 views
4

이상한 문제가 있습니다. 나는의 log4j를 사용하는 데 사용되는 클래스가 있고, 내가 좋아하는 뭔가를 할 수 :SLF4J는 정보 수준에서 오류 메시지를 기록합니다.

LOGGER.log(Level.SEVERE, "This is a message"); 

을 그리고 나는이 같은 출력을 얻을 것 :

SEVERE :이 메시지

입니다

내가 응용 프로그램의 나머지 부분과 일관성에 대한 SLF4J 로거로 교체 :

LOGGER.error("This is a message."); 

그러나 이제 INFO 레벨 로깅 같습니다

INFO : 2012-01-23 16 : 50 : 43306 [HTTP 스레드 풀-8080 (3)] ERROR com.mycompany.MyClass -이 메시지

에게 인

나는 이것이 ERROR 레벨에서 기록 될 것으로 예상했다. (SLF4J는 그 이상의 레벨을 가지고있는 것 같지 않다.)

어떤 일이 벌어지고 있는지 알 수 있습니까? 이것이 기본값입니까? 응용 프로그램은 상당히 복잡하므로 어딘가에 변경되면 놀라지 않을 것입니다.하지만 다시 변경해야 할 부분은 어디입니까?

관련이있을 수 있으므로 Glassfish를 사용하고 있습니다.

답변

4

SLF4J에서 Java Util Logging 백엔드를 사용해야합니다. Glassfish가 내부적으로 사용하는 것입니다. 그것을 사용하지 않기 때문에 콘솔로 덤핑되고, GF는 콘솔의 모든 것을 INFO로보고합니다.

그래서 JUL 어댑터를 연결하면 모든 기능이 뛰어납니다.

+0

오류가 나중에 줄에 표시됩니다. –

1

로깅을위한 구성 목록이 없어도 추측 일뿐입니다. 하지만 로깅 프레임 워크가 잘못 구성된 것 같습니다. ERROR 수준에서 SLF4J 로그 :

ERROR com.mycompany.MyClass - This is a message 

다음이 출력은 글래스 피쉬에 의해 정보 수준에서 일반 로그 파일에 리디렉션 콘솔로 전송됩니다.

이전 설정에서는 glassfish 로깅을 사용하여 구성을 직접 상속했을 수 있습니다. slf4j로 전환 한 후 구성이 발견되지 않았으므로 모든 것이 콘솔로 전송 된 다음 server.log로 전송됩니다.

관련 문제