0

我有一个在 Amazon EC2 实例上运行的 Java 应用程序。我正在使用 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

任何帮助表示赞赏。谢谢你。

4

1 回答 1

1

尝试使用

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

代替

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

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

于 2017-12-12T12:02:00.410 回答