You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4net-dev@logging.apache.org by rg...@apache.org on 2009/05/24 02:21:05 UTC
svn commit: r778073 - in /logging/log4net/trunk/src: Core/LocationInfo.cs
Layout/PatternLayout.cs log4net.vs2005.csproj
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>