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);
의 사용