Author: rgrabowski
Date: Sun May 24 00:21:04 2009
New Revision: 778073
URL: http://svn.apache.org/viewvc?rev=778073&view=rev
Log:
Fix for LOG4NET-154. Added StackTracePatternConverter that outputs the methods
called before the log message.
Modified:
logging/log4net/trunk/src/Core/LocationInfo.cs
logging/log4net/trunk/src/Layout/PatternLayout.cs
logging/log4net/trunk/src/log4net.vs2005.csproj
Modified: logging/log4net/trunk/src/Core/LocationInfo.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Core/LocationInfo.cs?rev=778073&r1=778072&r2=778073&view=diff
==============================================================================
--- logging/log4net/trunk/src/Core/LocationInfo.cs (original)
+++ logging/log4net/trunk/src/Core/LocationInfo.cs Sun May 24 00:21:04 2009
@@ -18,6 +18,7 @@
#endregion
using System;
+using System.Collections;
using System.Diagnostics;
using log4net.Util;
@@ -89,7 +90,7 @@
{
StackTrace st = new StackTrace(true);
int frameIndex = 0;
-
+
// skip frames not from
fqnOfCallingClass
while (frameIndex < st.FrameCount)
{
@@ -114,6 +115,17 @@
if (frameIndex < st.FrameCount)
{
+ // take into account the frames
we skip above
+ int adjustedFrameCount =
st.FrameCount - frameIndex;
+ ArrayList stackFramesList = new
ArrayList(adjustedFrameCount);
+ m_stackFrames = new
StackFrame[adjustedFrameCount];
+ for (int i=frameIndex; i <
st.FrameCount; i++)
+ {
+
stackFramesList.Add(st.GetFrame(i));
+ }
+
+
stackFramesList.CopyTo(m_stackFrames, 0);
+
// now frameIndex is the first
'user' caller frame
StackFrame locationFrame =
st.GetFrame(frameIndex);
@@ -258,6 +270,14 @@
{
get { return m_fullInfo; }
}
+
+ /// <summary>
+ /// Gets the stack frames from the stack trace of the caller
making the log request
+ /// </summary>
+ public StackFrame[] StackFrames
+ {
+ get { return m_stackFrames; }
+ }
#endregion Public Instance Properties
@@ -268,6 +288,7 @@
private readonly string m_lineNumber;
private readonly string m_methodName;
private readonly string m_fullInfo;
+ private readonly StackFrame[] m_stackFrames;
#endregion Private Instance Fields
Modified: logging/log4net/trunk/src/Layout/PatternLayout.cs
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/Layout/PatternLayout.cs?rev=778073&r1=778072&r2=778073&view=diff
==============================================================================
--- logging/log4net/trunk/src/Layout/PatternLayout.cs (original)
+++ logging/log4net/trunk/src/Layout/PatternLayout.cs Sun May 24 00:21:04 2009
@@ -437,6 +437,17 @@
/// <term>r</term>
/// <description>Equivalent to <b>timestamp</b></description>
/// </item>
+ /// <item>
+ /// <term>stacktrace</term>
+ /// <description>
+ /// <para>
+ /// Used to output the stack trace of the logging
event
+ /// The stack trace level specifier may be enclosed
+ /// between braces. For example,
<b>%stacktrace{level}</b>.
+ /// If no stack trace level specifier is given then
1 is assumed
+ /// </para>
+ /// </description>
+ /// </item>
/// <item>
/// <term>t</term>
/// <description>Equivalent to <b>thread</b></description>
@@ -848,7 +859,9 @@
s_globalRulesRegistry.Add("r",
typeof(RelativeTimePatternConverter));
s_globalRulesRegistry.Add("timestamp",
typeof(RelativeTimePatternConverter));
-
+
+ s_globalRulesRegistry.Add("stacktrace",
typeof(StackTracePatternConverter));
+
s_globalRulesRegistry.Add("t",
typeof(ThreadPatternConverter));
s_globalRulesRegistry.Add("thread",
typeof(ThreadPatternConverter));
Modified: logging/log4net/trunk/src/log4net.vs2005.csproj
URL:
http://svn.apache.org/viewvc/logging/log4net/trunk/src/log4net.vs2005.csproj?rev=778073&r1=778072&r2=778073&view=diff
==============================================================================
--- logging/log4net/trunk/src/log4net.vs2005.csproj (original)
+++ logging/log4net/trunk/src/log4net.vs2005.csproj Sun May 24 00:21:04 2009
@@ -27,7 +27,7 @@
</UpgradeBackupLocation>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU'
">
- <OutputPath>..\build\bin\net\1.0\debug\</OutputPath>
+ <OutputPath>..\build\bin\net\2.0\debug\</OutputPath>
<AllowUnsafeBlocks>false</AllowUnsafeBlocks>
<BaseAddress>285212672</BaseAddress>
<CheckForOverflowUnderflow>false</CheckForOverflowUnderflow>
@@ -420,6 +420,7 @@
<Compile Include="Layout\Pattern\RelativeTimePatternConverter.cs">
<SubType>Code</SubType>
</Compile>
+ <Compile Include="Layout\Pattern\StackTracePatternConverter.cs" />
<Compile Include="Layout\Pattern\ThreadPatternConverter.cs">
<SubType>Code</SubType>
</Compile>