[jboss-svn-commits] JBoss Common SVN: r3855 - jboss-logmanager/trunk/src/main/java/org/jboss/logmanager.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Dec 14 21:31:59 EST 2009
Author: david.lloyd at jboss.com
Date: 2009-12-14 21:31:59 -0500 (Mon, 14 Dec 2009)
New Revision: 3855
Modified:
jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/WrappedExtLogRecord.java
Log:
Attempt to infer file name and line number from the nested log record
Modified: jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/WrappedExtLogRecord.java
===================================================================
--- jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/WrappedExtLogRecord.java 2009-12-14 23:21:19 UTC (rev 3854)
+++ jboss-logmanager/trunk/src/main/java/org/jboss/logmanager/WrappedExtLogRecord.java 2009-12-15 02:31:59 UTC (rev 3855)
@@ -32,7 +32,8 @@
private static final long serialVersionUID = 980830752574061944L;
private static final String LOGGER_CLASS_NAME = java.util.logging.Logger.class.getName();
- private final LogRecord orig;
+ private transient final LogRecord orig;
+ private transient boolean resolved;
WrappedExtLogRecord(final LogRecord orig) {
super(orig.getLevel(), orig.getMessage(), LOGGER_CLASS_NAME);
@@ -85,31 +86,71 @@
}
public String getSourceClassName() {
- final String sourceMethodName = orig.getSourceMethodName();
- final String sourceClassName = orig.getSourceClassName();
- super.setSourceMethodName(sourceMethodName);
- super.setSourceClassName(sourceClassName);
- return sourceClassName;
+ if (! resolved) {
+ resolve();
+ }
+ return super.getSourceClassName();
}
public void setSourceClassName(final String sourceClassName) {
+ resolved = true;
super.setSourceClassName(sourceClassName);
orig.setSourceClassName(sourceClassName);
}
public String getSourceMethodName() {
+ if (! resolved) {
+ resolve();
+ }
+ return super.getSourceMethodName();
+ }
+
+ public void setSourceMethodName(final String sourceMethodName) {
+ resolved = true;
+ super.setSourceMethodName(sourceMethodName);
+ orig.setSourceMethodName(sourceMethodName);
+ }
+
+ private void resolve() {
+ resolved = true;
final String sourceMethodName = orig.getSourceMethodName();
final String sourceClassName = orig.getSourceClassName();
super.setSourceMethodName(sourceMethodName);
super.setSourceClassName(sourceClassName);
- return sourceMethodName;
+ final StackTraceElement[] st = new Throwable().getStackTrace();
+ for (StackTraceElement element : st) {
+ if (element.getClassName().equals(sourceClassName) && element.getMethodName().equals(sourceMethodName)) {
+ super.setSourceLineNumber(element.getLineNumber());
+ super.setSourceFileName(element.getFileName());
+ return;
+ }
+ }
}
- public void setSourceMethodName(final String sourceMethodName) {
- super.setSourceMethodName(sourceMethodName);
- orig.setSourceMethodName(sourceMethodName);
+ public int getSourceLineNumber() {
+ if (! resolved) {
+ resolve();
+ }
+ return super.getSourceLineNumber();
}
+ public void setSourceLineNumber(final int sourceLineNumber) {
+ resolved = true;
+ super.setSourceLineNumber(sourceLineNumber);
+ }
+
+ public String getSourceFileName() {
+ if (! resolved) {
+ resolve();
+ }
+ return super.getSourceFileName();
+ }
+
+ public void setSourceFileName(final String sourceFileName) {
+ resolved = true;
+ super.setSourceFileName(sourceFileName);
+ }
+
public String getMessage() {
return orig.getMessage();
}
More information about the jboss-svn-commits
mailing list