私の 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>