jdbc - 用于记录堆栈跟踪的 Log4j JDBCAppender

标签 jdbc log4j stack-trace

使用 org.apache.log4j.jdbc.JDBCAppender,我怎样才能将带有 warnerror 的 stracktraces 记录到 图案布局

我正在记录

logger.warn("warning description", e);
logger.error("error description", e);

我将字符串描述放入表中,但 Throwable 的堆栈跟踪现在在哪里。我可以通过 PatternLayout 访问另一个参数吗?目前我正在使用

"INSERT INTO app_logs (app, log_date, log_level, location, loc, message) VALUES ('my-apps-name', '%d{ISO8601}','%p', '%C.java', '%C{1}.java:%L', '%m')" 

放入表格

TABLE `app_logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(255) DEFAULT NULL,
  `log_date` varchar(255) DEFAULT NULL,
  `log_level` varchar(255) DEFAULT NULL,
  `location` varchar(255) DEFAULT NULL,
  `loc` varchar(255) DEFAULT NULL,
  `message` text, 
  PRIMARY KEY (`id`)
)

最佳答案

我找到了解决方案。

PatternLayout 类替换为 EnhancedPatternLayout 类。

org.apache.log4j.EnhancedPatternLayout

您还需要包含 apache-log4j-extra dependency

include it in your pom :

<dependency>
  <groupId>log4j</groupId>
  <artifactId>apache-log4j-extras</artifactId>
  <version>1.1</version>
</dependency>

您现在可以访问 %throwable

%throwable{short} or %throwable{1} will output the first line of stack trace. throwable{none} or throwable{0} will suppress the stack trace. %throwable{n} will output n lines of stack trace if a positive integer or omit the last -n lines if a negative integer.

我添加到我的表中,

TABLE `app_logs` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `app` varchar(255) DEFAULT NULL,
  `log_date` varchar(255) DEFAULT NULL,
  `log_level` varchar(255) DEFAULT NULL,
  `location` varchar(255) DEFAULT NULL,
  `loc` varchar(255) DEFAULT NULL,
  `message` text,
  `throwable` text,
  `stacktrace` text,
  PRIMARY KEY (`id`)
)

并更新了我的模式以填充这些列。

"INSERT INTO app_logs (app, log_date, log_level, location, loc, message, throwable, stacktrace) VALUES ('my-apps-name', '%d{ISO8601}','%p', '%C.java', '%C{1}.java:%L', '%m', '%throwable{short}', '%throwable{100}')"

关于jdbc - 用于记录堆栈跟踪的 Log4j JDBCAppender,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6734044/

相关文章:

java - 是否可以让 log4j 显示它用来配置自己的文件?

java - 堆栈跟踪记录器

java - 重复的堆栈跟踪

android - 启用 Dexguard 时,Crashlytics 的堆栈跟踪将文件名显示为未知来源

mysql - 找不到 mysql.jdbc.Driver - MySQL、JBoss

apache - Tomcat 连接池耗尽

java - 缺少依赖 JBoss AS 7.1.1

grails - Grails发送有关框架异常的电子邮件

java - 如何禁用某些包的日志记录?

java - 如何简化在Spring中使用DataSource的xml文件中添加多个bean