2012-06-16 3 views
2

저는이 스칼라 어플리케이션을 매우 간단하게 가지고 있습니다. 그것이하는 일은 로거를 초기화하고 logger.info ("Hello")를 수행하는 것입니다. 나는 응용 프로그램을 실행하려고 할 때, 다음과 같은 설정log4j : WARN 아무런 어펜더도 찾을 수 없습니다.

그러나
# Root logger option 
log4j.rootLogger=INFO, stdout 

# Direct log messages to stdout 
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{ABSOLUTE} %5p %c{1}:%L - %m%n 

을 가지고있는 클래스 패스에 log4j.properties 파일이 있습니다. 오류가 발생했습니다 log4j : WARN 로거 (app.TestApp $)에 대한 appender를 찾을 수 없습니다. log4j : WARN log4j 시스템을 올바르게 초기화하십시오.

무엇이 누락 되었습니까? 그러나 classpath에 hadoop-core.jar가 있으면 로그를 출력합니다 (예, log4j도 있습니다)

답변

6

log4J 구성 파일은 클래스 패스에 있지 않다고 생각되는 경우에도 있습니다. 이 문제를 해결하는 가장 쉬운 방법은, 다음의 Log4J는 그것의 구성을 찾기 위해 사용되는 알고리즘을 추적 할 VM 매개 변수에 -Dlog4j.debug를 추가하는 것입니다 때

scala -cp {yourclasspath} -Dlog4j.debug {yourscalaentrypoint} 

불행하게도 @Jens '대답은 도움이되지 않습니다 스칼라가 표준 자바 시스템 프로퍼티를 사용하여 클래스 패스를 저장하지 않기 때문에 스칼라 프로그램을 실행하고있다. 스칼라 프로그램에 사용 된 클래스 경로를 출력해야 할 때 this technique과 같은 것을 사용해야합니다.

1

속성 파일과 같은 소리는 클래스 경로에서 찾을 수 없습니다. 클래스 패스 (시스템 프로퍼티 java.class.path)를 출력하여 현재 진행중인 작업을 확인합니다.

관련 문제