我的 Log4Net 配置如下所示:
<appender name="MainLogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="${log4net_log_file_name}"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Size"/>
<maxSizeRollBackups value="1"/>
<maximumFileSize value="1MB"/>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.XmlLayoutSchemaLog4j">
<locationInfo value="true" />
</layout>
</appender>
<appender name="MemoryAppender" type="log4net.Appender.MemoryAppender" >
<onlyFixPartialEventData value="true" />
</appender>
</log4net>
我们正在记录异常,如下所示:
private readonly ILog _log = LogManager.GetLogger(typeof(LastChanceHandler));
private void LogException(Exception ex)
{
_log.Fatal("Unhandled exception", ex);
}
当我们记录错误时,我从未在日志中看到 Throwable 节点。使用当前布局是因为我们将 XML 转换为 DTO 并将它们显示在 UI 中。
我没有找到任何东西来解释为什么 Throwable 没有被设置并存储在日志中。有什么想法(我正在考虑让我的开发盒可扔掉。窗外)?
这是我的日志中的一个错误:
<log4j:event logger="Hsbc.Ice.Shell.ViewModels.ShellViewModel" timestamp="1353076754456" level="ERROR" thread="1"><log4j:message>14 modules did not terminated in a timely manner : TradingCockpitModule,AuthenticationModule,ConfigurationModule,EntitlementsModule,Hsbc.Ice.CreditServices,EncryptionModule,ReportsModule,DiagnosticsModule,InterProcessCommunication,Layout,Logging,PersistenceModule,StorageModule,ICEExplorerManagerServiceModule</log4j:message><log4j:properties><log4j:data name="log4net:UserName" value="HBEU\steveget" /><log4j:data name="log4net:Identity" value="HBEU\steveget" /><log4j:data name="log4jmachinename" value="E8262XDZW4LZKEC" /><log4j:data name="log4japp" value="Hsbc.Ice.Shell.exe" /><log4j:data name="log4net:HostName" value="E8262XDZW4LZKEC" /></log4j:properties><log4j:locationInfo class="Hsbc.Ice.Shell.ViewModels.ShellViewModel" method="<.ctor>b__3" file="d:\CreditFlow\Tools\Hudson\data\jobs\Credit Shell\workspace\src\Shell\Hsbc.Ice.Shell\ViewModels\ShellViewModel.cs" line="107" /></log4j:event>