My initial thought was this:
<layout type="log4net.Layout.PatternLayout">
<![CDATA[
%counter) Exception Information
*********************************************
Exception Type: %exception{type}
Message: %exception{message}
Data: ???
TargetSite: NULL
HelpLink: NULL
Source: NULL
]]>
</layout>
I don't think the current exception pattern implementation accepts
additional parameters.
I remember seeing a counter pattern somewhere but I can't seem to find
it now.
What should go in the "Data:" part of your example?
Does EntLib really show this text "Void ExecuteScripts(System.String,
System.String[], Boolean, Boolean)" or does it just show
"ExecuteScripts"?
I would create an ExtendedPatternLayout that registers additional
converters and have your appenders use that.
Create a JIRA issue if you think some of these patterns should be part
of PatternLayout.
--- Sean Carlin <[EMAIL PROTECTED]> wrote:
> Hi,
>
> I've had a request from the developers at my company to modify the
> way in
> which log4net outputs exceptions to the log. This would need to take
> effect
> in my EventLogAppender and AdoNetAppender. Will I need to create my
> own
> custom class similar to ExceptionLayout or a custom class similar to
> ExceptionPatternConverter? How can I specify this change to the
> EventLogAppender?
>
> The request is to format the exception more like the way the .NET
> Enterprise
> Library did in .NET 1.1.:
>
>
> 1) Exception Information
>
> *********************************************
>
> Exception Type: X.WebApps.NewsRoom.WebControls.NewsSystemException
>
> Message: Could not retrieve a list of articles from the category
>
> Data: System.Collections.ListDictionaryInternal
>
> TargetSite: NULL
>
> HelpLink: NULL
>
> Source: NULL
>
> 2) Exception Information
>
> *********************************************
>
> Exception Type: System.Exception
>
> Message: An error occurred while processing the required SQL script:
> D:\WebSites\X\WebAppsFolders\WebAppsCommonFiles\\scripts\core.config
>
> Data: System.Collections.ListDictionaryInternal
>
> TargetSite: Void ExecuteScripts(System.String, System.String[],
> Boolean,
> Boolean)
>
> HelpLink: NULL
>
> Source: X.WebApps.CoreLibrary.X.X
>
> StackTrace Information
>
> *********************************************
>
> at X.WebApps.CoreSystem.ExecuteScripts(String path, String[] scripts,
> Boolean trapExceptions, Boolean sendAppPath)
>
> at X.WebApps.CoreSystem.SystemInit()
>
> at X.WebApps.CoreSystem..ctor(String application)
>
> at
>
X.WebApps.NewsRoom.WebControls.NewsArticleDisplayer.GetNewsArticleAndCategory(Category&
> newsCategory, Article& newsArticle)
>
> Here is a sample of what is being output by the default format:
>
> System.Exception: Testing application error handling from the
> DevCenter/ApplicationErrorTest.aspx form. --->
> System.ArrayTypeMismatchException: Oh my gosh some sort of array
> mismatch
> occurred in this fake class! Error! Error!
> at RemoteNet.Zapenza.Utility.TestClass..ctor() in
>
C:\Solutions\CIProjects\RemoteNet\Zapenza\Working\Source\RemoteNet.Zapenza.Utility\TestClass.cs:line
> 11
> at DevCenter_ApplicationErrorTest.lnkApplicationError_Click(Object
> sender,
> EventArgs e) in
>
c:\Solutions\CIProjects\RemoteNet\Zapenza\Working\Source\RemoteNet.Zapenza.Web.UI\DevCenter\ApplicationErrorTest.aspx.cs:line
> 24
> --- End of inner exception stack trace ---
> at DevCenter_ApplicationErrorTest.lnkApplicationError_Click(Object
> sender,
> EventArgs e) in
>
c:\Solutions\CIProjects\RemoteNet\Zapenza\Working\Source\RemoteNet.Zapenza.Web.UI\DevCenter\ApplicationErrorTest.aspx.cs:line
> 28
> at System.Web.UI.WebControls.LinkButton.OnClick(EventArgs e)
> at System.Web.UI.WebControls.LinkButton.RaisePostBackEvent(String
> eventArgument)
> at
>
System.Web.UI.WebControls.LinkButton.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String
> eventArgument)
> at System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler
> sourceControl, String eventArgument)
> at System.Web.UI.Page.RaisePostBackEvent(NameValueCollection
> postData)
> at System.Web.UI.Page.ProcessRequestMain(Boolean
> includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
>