2012-07-24 3 views
0

log4j 작동 방식을 알고 싶습니다. 본 사이트에서 많은 자습서와 모든 답변을 읽었지만, 여전히 작동하는 구체적인 예는 얻지 못했습니다. 이 클래스와way/format에서 log4j를 사용하는 방법은 무엇입니까?

import org.apache.log4j.*; 

public class Exercise { 
    private static Logger logger = Logger.getLogger(SimpleLogger.class); 

    public static void main(String args[]) { 

     BasicConfigurator.configure(); 

     // ConsoleAppender myAppender = new ConsoleAppender(null, "System.out"); 
     // myAppender.setLayout(new SimpleLayout()); 
     // logger.addAppender(myAppender); 

     for (int i = 0; i < 5; i++) { 
      logger.info("You are here!"); 
     } 

     logger.info("End of program"); 
    } 
} 

:

나는이 시도했다

import org.apache.log4j.spi.LoggingEvent; 

public class SimpleLogger extends org.apache.log4j.Layout { 

    @Override 
    public void activateOptions() { 

    } 

    @Override 
    public String format(LoggingEvent event) { 
     return "log message = " + event.getMessage().toString() + "/n"; 
    } 

    @Override 
    public boolean ignoresThrowable() { 
     return true; 
    } 
} 

을하지만 내 출력은 다음과 같습니다

0 [main] INFO SimpleLogger - You are here! 
1 [main] INFO SimpleLogger - You are here! 
1 [main] INFO SimpleLogger - You are here! 
1 [main] INFO SimpleLogger - You are here! 
1 [main] INFO SimpleLogger - You are here! 
1 [main] INFO SimpleLogger - End of program 

가 나는 또한 시도했다, 코드하지로 댓글을 달았지만 출력물은 두 가지 형식으로되어 있습니다.

질문 : 출력 (콘솔 또는 파일)을 원하는 형식으로 만들려면 어떻게해야합니까? (log4j.properties)와 같은 외부 파일을 수정해야합니까?

+0

예 형식화 된 출력을 얻으려면 log4j.properies를 수정해야합니다. –

+0

예. log4j.properties 및 google을 더 수정해야합니다. – MaX

+0

여기에서이 설명서를 확인하십시오. http://logging.apache.org/log4j/1.2/manual.html –

답변

1

이 줄 :

private static Logger logger = Logger.getLogger(SimpleLogger.class); 

단순히 로그에 대한 현재의 상황이 SimpleLogger입니다 기본 로거를 알려줍니다. 그것은 기본 로거 구현을 지정하지 않습니다. 사실 사용자 정의 로거를 구현할 필요가 전혀 없습니다. 구성 파일에서 형식을 지정할 수있는 구성자를 사용하기 만하면됩니다. 일반적인 기술은 XmlConfigurator를 사용하는 것입니다. 그러면 XML 설정 파일은 다양한 컨텍스트에서 서식을 지정하는 것과 관련하여 매우 구체적 일 수 있습니다. XML 기반 구성에 대한 자세한 내용은 here을 참조하십시오.

+0

고마워요. PropertyConfigurator.configure (CONFIG_FILE)를 사용했습니다. CONFIG_FILE은 내 등록 정보 파일의 주소입니다. –

0

속성 파일에 log4j 구성이있는 것이 좋습니다.
ConversionPattern을 지정하면 원하는 출력 형식을 얻을 수 있습니다. 예를 들어

log4j.appender.rollingFile.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 
+0

코드를 넣어야하는 곳은 어디입니까? –

+0

log4j.property 파일이 클래스 경로에 있어야합니다. src 폴더에 넣을 수 있습니다. –

0

라인 :

private static Logger logger = Logger.getLogger(SimpleLogger.class); 

지금 로거, 그것은 그냥 SimpleLogger라는 로거의 log4j.properties 파일에 모양을 의미 로그인 할 클래스를 사용하는 것을 의미하지 않는다 (또는 패키지에있는 경우 some.package.SimpleLogger을 찾습니다) 해당 로거에 대해 정의 된 패턴 레이아웃을 사용합니다.

로거를 찾을 수없는 경우 루트 로거가 기본값이되고 루트 로거 추가 자의 패턴 레이아웃을 사용합니다.

관련 문제