2014-10-19 1 views
0

저는 Log4j을 처음 사용합니다. Java에 익숙합니다.Logger4j에서 ExceptionInInitiaizerError를 throw합니다.

나는 Log4j 앱을 실행하는 작은 예제를 작성했습니다.

package com.log; 



import org.apache.log4j.Logger; 



public class Log4jExample { 

    static Logger log = Logger.getLogger(Log4jExample.class.getName()); 



    public static void main(String[] args) { 

     log.debug("Hello, this is a debug message."); 
     log.info("Hello, this is an info message."); 
    } 
} 

는 그리고 이것은 내가 수동으로 $JAVA_HOME/jre/lib/ext/ 디렉토리에 만들어 내 log4j.properties 파일입니다.

# Define the root logger with appender X 
log = /Users/aditya/Desktop/log4j 
log4j.rootLogger = DEBUG, FILE 

# Set the appender named X to be a File appender 
log4j.appender.FILE=org.apache.log4j.FileAppender 
log4j.appender.FILE.File=${log}/log.out 

# Define the layout for X appender 
log4j.appender.FILE.layout=org.apache.log4j.PatternLayout 
log4j.appender.FILE.layout.conversionPattern=%m%n 

내가 같은 코드를 실행하고

는 Mac OS X 오전 :

javac com/log/Log4jExample.java 
java com.log.Log4jExample 

그러나 이것은 내가 무엇을 얻을 수 있습니다.

Exception in thread "main" java.lang.ExceptionInInitializerError 
Caused by: java.lang.ClassCastException: org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast to org.apache.logging.log4j.core.LoggerContext 
    at org.apache.log4j.Logger.getLogger(Logger.java:37) 
    at com.log.Log4jExample.<clinit>(Log4jExample.java:13) 

내가 뭘 잘못하고 있니? 도와주세요.

+0

클래스 경로에 어떤 로깅 JAR 파일이 있습니까? 어떻게 든'log4j' 클래스보다는'slf4j' 클래스를 만드는 무언가를 호출 한 것 같습니다. 일반 log4j JAR 파일을 사용하는 경우에는 발생하지 않습니다. –

+0

나는 log4j 라이브러리를 다운로드하고 내 $ JAVA_HOME/jre/lib/ext 디렉토리에 붙여 넣었다. –

+0

어떤 것. 어디에서 가져 왔니? ** ** ** ** 정확해야합니다. –

답변

1

Java 설치의 $JAVA_HOME/jre/lib/ext/에 부적절한 로깅 JAR 파일을 추가하는 것이 문제입니다. 즉 당신이 자바 설치를 사용하여 실행 모든 응용 프로그램에 영향을주기 때문에

  • 는 "내선"디렉토리에 제 3 자 JAR 파일을 추가하지 마십시오. (그리고 버전 불일치 등 일부 응용 프로그램에 해당 JAR 중 일부가 적합하지 않을 수도 있습니다)

  • 로깅 JAR 파일을 모두 ZIP 파일에 추가하지 마십시오 . 다운로드 한 웹 페이지의 지침에는 2 개만 필요하다고 나와 있습니다. 15 개의 JAR 파일 모두가 필요하지는 않습니다.


문제는 sl4fj 로깅 외관과 함께 사용 log4j에 적응하도록 설계된 JAR 파일에 의해 발생하는 것으로 보인다. org.apache.logging.slf4j.SLF4JLoggerContext 클래스는 fac4없이 log4j를 사용하는 응용 프로그램에서로드 된 상태로로드되어서는 안됩니다.

+0

무슨 말을하는거야? –

+0

지침을 읽으십시오. –

관련 문제