使用 org.apache.log4j.jdbc.JDBCAppender
,我怎样才能将带有 warn
和 error
的 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
<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}
orthrowable{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/