2014-06-22 3 views
4

메시지를 파일에 기록하도록 log4j를 구성하려고합니다. 지금 당장은 내가 제공 한 이름으로 파일이 만들어 지지만 로그는 파일에 쓰여지지 않습니다. 내 코드 : 내 log4j.properties 파일의Log4J는 로그 파일을 생성하지만 쓰기는하지 않습니다.

public class Main extends Application 
{ 
    private static Logger logger = Logger.getLogger(Main.class.getName()); 
    @Override 
    public void start(Stage primaryStage) throws Exception 
    { 
     logger.warning("test"); 
     logger.severe("oh noes"); 
    } 


    public static void main(String[] args) { 
     launch(args); 
    } 
} 

내용 :이 프로그램을 실행할 때

# Root logger option 
log4j.rootLogger=INFO, file, stdout 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 
log4j.appender.file.File=log.log 
log4j.appender.file.MaxFileSize=1024MB 
log4j.appender.file.MaxBackupIndex=1 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

, 내가 얻을 콘솔에서이 출력 :

Jun 23, 2014 3:19:16 AM com.foo.Main start 
WARNING: test 
Jun 23, 2014 3:19:16 AM com.foo.Main start 
SEVERE: oh noes 

파일 log.log가에서 만든 나올까요 내 메인 디렉토리. 그러나 비어 있습니다.

내가 잘못하고있는 아이디어가 있습니까? log4j 버전 1.2.17을 사용하고 있습니다.

+1

Log4J의'Logger' 클래스는 가져 오시겠습니까?'java.util.logging.Logger'가 아닌가요? – Isaac

답변

6

출력이 Java의 표준 로깅 프레임 워크 (JUL)에서 방출하는 기본 형식 인 것 같습니다. 오히려 org.apache.log4j.Logger보다

  1. 에 코드를 수입 java.util.logging.Logger :

    그래서, 두 가지 가능성 (즉, 마음에 와서)이있다.

  2. classpath에 Log4J 호출을 인터셉트하고 JUL 호출로 변환하는 라이브러리가 있습니다.
+0

고마워요. 그러나 나는 단지'오류'이상의 메시지 만 파일이나 콘솔에 기록된다는 것을 알게되었습니다. 어떤 아이디어로 모든 단계를 기록 할 수 있습니까? –

+1

설정이 어떻게 설정 되었는가? (여기에 게시 한 이후로 변경했을 수도있다) Log4J는'info' 이상인 메시지 만 출력하고 콘솔과 파일 모두에 출력 할 것이다. 'log4j.rootLogger'에서'INFO'를'ALL'로 바꾸면이 동작을 바꿀 수 있습니다. 그래도 작동하지 않는다면 JVM 인수에'-Dlog4j.debug = true'를 추가하면 Log4J가 자체에 대한 디버그 메시지 (System.out)를 내보내 게되어 어떤 일이 벌어지는 지 확인할 수 있습니다. – Isaac

1

클래스 경로에 log4j.jar을 추가하십시오. 속성 파일이 올바른지 여부. 이 속성 파일을 사용해 볼 수 있습니다.

# Root logger option 
log4j.rootLogger=INFO, file,stdout 

# Direct log messages to a log file 
log4j.appender.file=org.apache.log4j.RollingFileAppender 


log4j.appender.file.File=C:\\logigng.log 
log4j.appender.file.MaxFileSize=10MB 
log4j.appender.file.MaxBackupIndex=10 
log4j.appender.file.layout=org.apache.log4j.PatternLayout 
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 
관련 문제