Log4j 在本地而不是在服务器上打印错误堆栈跟踪

Log4j prints error stacktrace on local but not on server

我在 Amazon EC2 实例上有一个 Java 应用程序 运行ning。我正在使用 Apache log4j 日志记录框架来维护 ERROR 以及我的应用程序的 DEBUG 日志。

但最近我无法使用 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 文件只显示消息 Exception occurred while fetching count from DB

我的 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

如果我 运行 在本地应用程序,我可以看到错误打印堆栈跟踪,但同样不适用于我的 Amazon EC2 实例。

log4j 版本为 1.7.2

JDK版本是1.7.0_151

感谢任何帮助。谢谢。

尝试使用

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

而不是

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

第一个允许您在整个继承层次结构中的所有 class 中使用实际 class 的名称。