java - Log4j 在本地打印错误堆栈跟踪,但不在服务器上打印

标签 java logging amazon-ec2 slf4j slf4j-api

我有一个在 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文件仅显示消息从数据库获取计数时发生异常

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

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

关于java - Log4j 在本地打印错误堆栈跟踪,但不在服务器上打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47770393/

相关文章:

java - 为什么 PostgreSQL 查询后部分 Java 代码没有执行?

python - 为什么需要 "import logging"和 "import logging.config"?

javascript - 在Toastr中显示错误和异常,或使用MVC4和Entity Framework的类似方法

amazon-web-services - 如何确定使用此 AWS 网络接口(interface)的内容?

hadoop - 随着集群规模的增加,每个节点并发运行的映射器数量在 Elastic MapReduce w/AMI 3.1.0 和 Hadoop 2.4.0 上急剧下降

java - 在 Java DOM 文档中设置 namespace 和前缀

java - 获取从一个 JFrame 到另一个带有 textArea 的弹出 JFrame 的设置文本

Java 类加载器 : How to load class with binary name different from looked up name?

C++ 日志库

java - 您的 Amazon EC2 滥用报告