2010-11-25 7 views
0

log4j 로거의 여러 인스턴스를 사용하고 싶습니다. 이 log4j Logger 인스턴스 각각에 다른 Properties 객체를 연결해야합니다. 여기 다중 log4j 인스턴스 구성

코드가 하나 개의 인스턴스에 대해 구성하는 것입니다

LOG4J = org.apache.log4j.Logger.getLogger(Logger.class); 

Properties log4jProps = new Properties(); 

... 

PropertyConfigurator.configure(log4jProps); 

내가 두 log4j에 인스턴스를 갖고 싶어하고 각각 다른 속성이있는 경우?

답변

7

왜 다중 로거를 더 자세히 설명 할 수 있는지 설명 할 수 있습니까? 여러 개의 log4j 인스턴스를 가질 수 있다고 생각하지 않습니다. 그냥 여러 펜더를 원하는 경우에

, 이쪽을 봐 :

# logj4.properties 
log4j.rootCategory = WARN, A 
log4j.category.com.lewscanon = WARN, F 
log4j.category.com.lewscanon.mouser = DEBUG, X 

log4j.appender.A = org.apache.log4j.ConsoleAppender 
log4j.appender.A.layout = org.apache.log4j.PatternLayout 

log4j.appender.F = org.apache.log4j.RollingFileAppender 
log4j.appender.F.layout = org.apache.log4j.PatternLayout 
log4j.appender.F.File = /projects/mouser/logs/lewscanon.log 
log4j.appender.F.MaxFileSize = 512KB 
log4j.appender.F.MaxBackupIndex = 2 

log4j.appender.X = org.apache.log4j.RollingFileAppender 
log4j.appender.X.layout = org.apache.log4j.PatternLayout 
log4j.appender.X.File = /projects/mouser/logs/mouser.log 
log4j.appender.X.MaxFileSize = 512KB 
log4j.appender.X.MaxBackupIndex = 2 

log4j.appender.A.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 
log4j.appender.F.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 
log4j.appender.X.layout.ConversionPattern= %d %-16c{1}:%-39m %-t %x%n 

이 라인 :

은 위의 링크에서 log4j.properties를의

log4j.rootCategory = WARN, A 
log4j.category.com.lewscanon = WARN, F 
log4j.category.com.lewscanon.mouser = DEBUG, X 

다음과 같이 말하십시오.

  • 모든 것을 콘솔 (콘솔) A에 기록하십시오. 로그 경고 이상에만 해당
  • com.lewscanon 패키지에서 appender F (모든 파일을 lewscanon.log 파일로 이동)에 모든 것을 기록하십시오. 로그 경고 이상에서만
  • com.lewscannon.mouser 패키지에서 appender X (모든 파일은 mouser.log로 이동)까지 모든 것을 기록하십시오. 만 디버그 및

위를 기록 그것은 전체 클래스 이름을 제공 할 수도 있습니다

log4j.category.com.lewscanon.SomeClass = WARN, F 

수단이 F를 펜더하는 com.lewscanon.SomeClass 클래스에서 모든 로그 수준은 위의 경고합니다.

Logger.getLogger(String name) 받아들이 : 당,

나는 위에서 충분히 세분화 겠지,하지만 당신은 절대적으로 필요한 경우가 더 세분화 (나는 그래도 충분히 실용적인 생각하지 않습니다) 이름. 그래서 당신은 같은 것을 수행 할 수 있습니다

log4j.category.myFancyLogger = INFO, F 

및 레벨 정보와 F를 펜더을 기록 로거를 얻을 수 Logger.getLogger("myFancyLogger")를 사용합니다.

+0

귀하의 링크를 보았습니다. 하지만 어떻게 로그 위치를 앞뒤로 바꿀 수 있습니까? 내 말은 한 가지 log4j 인스턴스를 사용하고 다른 방법으로 다른 파일에 로그를 남기고 어떤 방법으로 한 파일에 로그하는 것을 의미합니다. 어떤예요? – Kavin

+0

편집을 참조하십시오. 충분히 세밀 해지기를 바랍니다. –

+0

그것은 작동합니다. 고마워요 – Kavin