bloritsch 2003/02/03 11:07:29
Modified: src/java/org/apache/log/format ExtendedPatternFormatter.java
src/java/org/apache/log/util StackIntrospector.java
src/xdocs changes.xml
Log:
Add patches from Sash Chatterjee to support any arbitrary wrappers
Revision Changes Path
1.8 +18 -3
jakarta-avalon-logkit/src/java/org/apache/log/format/ExtendedPatternFormatter.java
Index: ExtendedPatternFormatter.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-logkit/src/java/org/apache/log/format/ExtendedPatternFormatter.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- ExtendedPatternFormatter.java 3 Feb 2003 17:40:12 -0000 1.7
+++ ExtendedPatternFormatter.java 3 Feb 2003 19:07:28 -0000 1.8
@@ -82,11 +82,18 @@
private static final String TYPE_METHOD_STR = "method";
private static final String TYPE_THREAD_STR = "thread";
+ private int m_callStackOffset = 0;
+
public ExtendedPatternFormatter( final String format )
{
- super( format );
+ this( format, 0 );
}
+ public ExtendedPatternFormatter( final String format, final int callStackOffset
)
+ {
+ super( format );
+ m_callStackOffset = callStackOffset;
+ }
/**
* Retrieve the type-id for a particular string.
*
@@ -147,7 +154,15 @@
}
}
- final String result = StackIntrospector.getCallerMethod( Logger.class );
+ //Determine callee of user's class. If offset is 0, we need to find
+ // Logger.class. If offset is 1, We need to find caller of Logger.class,
etc.
+ final Class clazz = StackIntrospector.getCallerClass( Logger.class,
m_callStackOffset - 1);
+ if (null == clazz)
+ {
+ return "UnknownMethod";
+ }
+
+ final String result = StackIntrospector.getCallerMethod( clazz );
if( null == result )
{
return "UnknownMethod";
1.8 +16 -2
jakarta-avalon-logkit/src/java/org/apache/log/util/StackIntrospector.java
Index: StackIntrospector.java
===================================================================
RCS file:
/home/cvs/jakarta-avalon-logkit/src/java/org/apache/log/util/StackIntrospector.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- StackIntrospector.java 3 Feb 2003 17:40:17 -0000 1.7
+++ StackIntrospector.java 3 Feb 2003 19:07:28 -0000 1.8
@@ -129,6 +129,20 @@
public static final Class getCallerClass( final Class clazz )
throws SecurityException
{
+ return getCallerClass(clazz, 0);
+ }
+
+ /**
+ * Find the caller of the passed in Class.
+ * May return null if caller not found on execution stack
+ *
+ * @param clazz the Class to search for on stack to find caller of
+ * @param stackDepthOffset Offset call-stack depth to find caller
+ * @return the Class of object that called parrameter class
+ * @exception SecurityException if an existing SecurityManager disallows
construction
+ * of another SecurityManager and thus blocks method results
+ */
+ public static final Class getCallerClass(final Class clazz, int
stackDepthOffset) {
final Class[] stack = getCallStack().get();
// Traverse the call stack in reverse order until we find clazz
@@ -137,7 +151,7 @@
if( clazz.isAssignableFrom( stack[ i ] ) )
{
// Found : the caller is the previous stack element
- return stack[ i + 1 ];
+ return stack[ i + 1 + stackDepthOffset];
}
}
1.37 +4 -0 jakarta-avalon-logkit/src/xdocs/changes.xml
Index: changes.xml
===================================================================
RCS file: /home/cvs/jakarta-avalon-logkit/src/xdocs/changes.xml,v
retrieving revision 1.36
retrieving revision 1.37
diff -u -r1.36 -r1.37
--- changes.xml 3 Feb 2003 18:35:16 -0000 1.36
+++ changes.xml 3 Feb 2003 19:07:29 -0000 1.37
@@ -9,8 +9,12 @@
<author email="giacomo at apache.org">Giacomo Pati</author>
<author email="crafterm at apache.org">Marcus Crafter</author>
<author email="sylvain.wallez at anyware-tech.com">Sylvain Wallez</author>
+ <author email="shash_list at hotmail.com">Sash Chatterjee</author>
</devs>
<release version="1.2" date="?">
+ <action dev="SC" type="add">
+ Add support for any arbitrary logger wrapper class.
+ </action>
<action dev="SW" type="add">
Add support for the LF5 GUI logging target.
</action>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]