Jboss AS 7自定义记录器问题

时间:2012-07-10 15:10:13

标签: logging jboss7.x

我的应用程序在Jboss AS 7.1.1.final上运行。我需要将日志写入数据库,因此我编写了一个自定义处理程序:public class DataSourceHandler extends java.util.logging.Handler

一切正常但我需要获取调用此日志的类的行号和名称,如果出现错误,还需要获取堆栈跟踪。

在我们升级到Jboss 7之前,我们使用了log4j,我们设法使用:

org.apache.log4j.spi.LocationInfo locationInfo = new org.apache.log4j.spi.LocationInfo(event.getThrown(), event.getSourceClassName());
org.apache.log4j.spi.ThrowableInformation throwableInfo = new org.apache.log4j.spi.ThrowableInformation(event.getThrown());

if (locationInfo != null) {
    fileName = locationInfo.getFileName();
    lineNumber = locationInfo.getLineNumber();
}
if (throwableInfo != null) {
    String[] exceptionArray = throwableInfo.getThrowableStrRep();
    for (String line : exceptionArray) {
        exceptionBuffer.append(line).append(NEW_LINE);
}
info = extractInfo(exceptionBuffer);
}

我现在该怎么办?

1 个答案:

答案 0 :(得分:1)

J.U.L没有提供这些信息。如果你不介意依赖jboss-logmanger你可以扩展org.jboss.logmanager.ExtHandler而不是J.U.L.处理程序。这将为您提供将提供该信息的org.jboss.logmanager.ExtLogRecord

你只需覆盖doPublish(ExtLogRecord)而不是J.U.L.发布方法。

JBoss AS 7使用JBoss Logging和JBoss Log Manager,因此已经为您提供了依赖关系。