2017-12-12 31 views
0

Amazon EC2 인스턴스에서 실행중인 Java 응용 프로그램이 있습니다. 그리고 내 응용 프로그램에 대한 DEBUG 로그뿐만 아니라 ERROR을 유지하기 위해 아파치 log4j 로깅 프레임 워크를 사용하고 있습니다.Log4j는 로컬에서는 서버 스택이 아니라 stacktrace 오류를 인쇄합니다.

하지만 최근에 나는 logger.error(String Message, Throwable t)을 사용하여 오류 스택 추적을 기록 할 수 없습니다.

나는

final Logger logger = LoggerFactory.getLogger(MyClass.class); 

StringWriter sWriter = new StringWriter(); 
e.printStackTrace(new PrintWriter(sWriter)); 
logger.error("Exception occured while fetching count from DB", sWriter); 

그러나 .log 파일 만 메시지를 표시,이 같은 대안으로 로그인을 시도 내가 응용 프로그램을 로컬로 실행하면 내 log4j.properties 파일이

# Root logger 
log4j.rootLogger=INFO, RollingAppender 

# LOG4J daily rolling log files configuration 
log4j.rootLogger=${loggingType}, RollingAppender 
log4j.appender.RollingAppender=org.apache.log4j.DailyRollingFileAppender 
log4j.appender.RollingAppender.File=${logFile} 
log4j.appender.RollingAppender.DatePattern='.'yyyy-MM-dd 
log4j.appender.RollingAppender.layout=org.apache.log4j.PatternLayout 
log4j.appender.RollingAppender.layout.ConversionPattern=%d [%p] %c %M - %m%n 

과 같은 Exception occurred while fetching count from DB

, 오류 인쇄 스택 추적을 볼 수 있지만 Amazon EC2 인스턴스에서는 작동하지 않습니다.

의 log4j 버전은 1.7.2

JDK 버전이 어떤 도움에 감사드립니다 1.7.0_151

입니다. 고맙습니다. 첫 번째는 상속 계층 구조를 통해 모든 클래스에서 실제 클래스의 이름을 사용할 수 있습니다

final Logger logger = LoggerFactory.getLogger(getClass()); 

대신

final Logger logger = LoggerFactory.getLogger(MyClass.class); 

의 사용

답변

1

보십시오.