2010-04-16 4 views
24

모든 로그 항목을 데이터베이스에 기록하는 사용자 정의 로거를 구현하고 싶습니다.slf4j로 사용자 정의 로거 구현

private static final Logger logger = LoggerFactory.getLogger(MyClass.class); 

내가 진행하는 방법을 잘 모르겠어요 : 현재 내 응용 프로그램 (바인딩 SLF4J 및 log4j에) 이런 식으로 기록합니다. 내 생각은 사용자 지정 로깅 바인딩을 구현하는 것입니다. org.slf4j.Logger Interface

다음 단계는 무엇입니까?

+0

Logback (http://logback.qos.ch) - 원시 SLF4J 구현은 데이터베이스에 로그 할 수 있습니다. –

+0

@ Michał Mech, * native *? –

+0

@ Bruno Reis, 예. 로그백은 기본적으로 SLF4J API를 구현합니다. –

답변

25

이 매우 용이해야한다 : 내 목표는 현재 코드를 내가 생각

링크를 변경하지 않는 것입니다. 자신의 LoggerLoggerFactory을 구현해야합니다. 기존 코드를 전혀 변경하지 않아도됩니다.

로거 팩토리와 클래스 이름을 반환하려면 StaticLoggerBinder을 구현해야합니다. slf4j zip 파일을 다운로드하면 모든 구현 소스도 얻을 수 있습니다. 예를 들어 slf4j-log4j의 StaticLoggerBinder를 살펴보십시오.

은 자세한 내용은이 링크를 한 번 봐 가지고 : 당신은 당신의 자신의 로깅 구현을 작성할 필요가 없습니다 http://www.slf4j.org/faq.html#slf4j_compatible

+0

감사합니다.로깅 프레임 워크에서 log4j를 사용할 수도 있습니까? 데이터베이스에 오류와 경고 만 기록하고 나머지는 log4j를 사용합니까? 문제는 http://www.slf4j.org/codes.html#multiple_bindings보다 2 바인딩이 있다는 것입니다. 현재 사용자 지정 log4j 애 펜더가 내가 찾고있는 것이기 때문에 오류 및 경고 수준은 다음과 같습니다. –

+0

나머지 부분은 log4j.xml에 구성되어 있습니다. –

+0

확실한 점은 log4j에 관련 요청을 전달할 수 있도록 사용자 정의 로거를 작성할 수 있다고 생각합니다. 다시, slf4j-log4j의 소스를보고 시작하겠습니다 :) – oedo

4

을 어떻게 logback에 로깅 프레임 워크 전환에 대한? Loback은 기본적으로 데이터베이스에 로깅을 지원합니다. SLF4J API를 두 번 사용하면 코드가 변경되지 않습니다.

ch.qos.logback.classic.db.DBAppender을 살펴보십시오. 기본 테이블 레이아웃이 사용자의 필요에 맞지 않으면 ch.qos.logback.classic.db.names.DBNameResolver을 구현하여 테이블 및 색상 이름을 사용자 정의 할 수 있습니다.

관련 문제