0
我一直試圖在過去一天中處理log4net問題。要求是我有多個記錄器根據正在處理的特定服務器端事件創建唯一的日誌文件。問題是,當我創建多個appender時,輸出到我的日誌文件始終爲NULL。當在Log4Net中創建多個日誌文件時,輸出始終爲NULL
下面是我的app.config文件中的相關log4net塊。
<log4net>
<root>
<level value="DEBUG" />
</root>
<logger name="AffectivExcitementShortTermScore">
<level value="DEBUG" />
<appender-ref ref="AffectivExcitementShortTermScore" />
</logger>
<logger name="AffectivExcitementLongTermScore">
<level value="DEBUG" />
<appender-ref ref="AffectivExcitementLongTermScore" />
</logger>
<logger name="AffectivEngagementBoredomScore">
<level value="DEBUG" />
<appender-ref ref="AffectivEngagementBoredomScore" />
</logger>
<logger name="AffectivFrustrationScore">
<level value="DEBUG" />
<appender-ref ref="AffectivFrustrationScore" />
</logger>
<logger name="AffectivMeditationScore">
<level value="DEBUG" />
<appender-ref ref="AffectivMeditationScore" />
</logger>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<param name="File" value="C:\temp\emotiv_log.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
<appender name="AffectivExcitementShortTermScore" type="log4net.Appender.FileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\logs\\AffectivExcitementShortTermScore.csv">
</file>
<appendToFile value="true" />
<layout type="DataMind.CsvPatternLayout, DataMind">
<header value="DateTime,SystemUpTime,Value,EventTimer
" />
<conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{SystemUpTime}%newfield%property{Value}%newfield%property{EventTimer}%endrow" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="Version" />
<StringToMatch value="1" />
</filter>
</appender>
<appender name="AffectivExcitementLongTermScore" type="log4net.Appender.FileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\logs\\AffectivExcitementLongTermScore.csv">
</file>
<appendToFile value="true" />
<layout type="DataMind.CsvPatternLayout, DataMind">
<header value="DateTime,SystemUpTime,Value,EventTimer
" />
<conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{SystemUpTime}%newfield%property{Value}%newfield%property{EventTimer}%endrow" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="Version" />
<StringToMatch value="1" />
</filter>
</appender>
<appender name="AffectivEngagementBoredomScore" type="log4net.Appender.FileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\logs\\AffectivEngagementBoredomScore.csv">
</file>
<appendToFile value="true" />
<layout type="DataMind.CsvPatternLayout, DataMind">
<header value="DateTime,SystemUpTime,Value,EventTimer
" />
<conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{SystemUpTime}%newfield%property{Value}%newfield%property{EventTimer}%endrow" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="Version" />
<StringToMatch value="1" />
</filter>
</appender>
<appender name="AffectivFrustrationScore" type="log4net.Appender.FileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\logs\\AffectivFrustrationScore.csv">
</file>
<appendToFile value="true" />
<layout type="DataMind.CsvPatternLayout, DataMind">
<header value="DateTime,SystemUpTime,Value,EventTimer
" />
<conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{SystemUpTime}%newfield%property{Value}%newfield%property{EventTimer}%endrow" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="Version" />
<StringToMatch value="1" />
</filter>
</appender>
<appender name="AffectivMeditationScore" type="log4net.Appender.FileAppender">
<param name="LockingModel" type="log4net.Appender.FileAppender+MinimalLock" />
<file type="log4net.Util.PatternString" value="C:\\logs\\AffectivMeditationScore.csv">
</file>
<appendToFile value="true" />
<layout type="DataMind.CsvPatternLayout, DataMind">
<header value="DateTime,SystemUpTime,Value,EventTimer
" />
<conversionPattern value="%date{M/d/yyyy H:mm:ss.fff}%newfield%property{SystemUpTime}%newfield%property{Value}%newfield%property{EventTimer}%endrow" />
</layout>
<filter type="log4net.Filter.PropertyFilter">
<Key value="Version" />
<StringToMatch value="1" />
</filter>
</appender>
</log4net>
及以下是指向多個附加目的地的GetLogger方法:
public class SomeClass
{
protected static readonly ILog log = LogManager.GetLogger(typeof(Namespace.SomeClass));
private static readonly ILog log0 = LogManager.GetLogger("AffectivExcitementShortTermScore");
private static readonly ILog log1 = LogManager.GetLogger("AffectivExcitementLongTermScore");
private static readonly ILog log2 = LogManager.GetLogger("AffectivEngagementBoredomScore");
private static readonly ILog log3 = LogManager.GetLogger("AffectivFrustrationScore");
private static readonly ILog log4 = LogManager.GetLogger("AffectivMeditationScore");
最後,我登錄我的事件如下:
log0.Info(new Log
{
SystemUpTime = FormatUpTime(_states.TimeFromStart),
Value = _states.AffectivExcitementShortTermScore.ToString(),
EventTimer = _eventTimer
});
// log longterm exictement
log1.Info(new Log
{
SystemUpTime = FormatUpTime(_states.TimeFromStart),
Value = _states.AffectivExcitementLongTermScore.ToString(),
EventTimer = _eventTimer
});
我的結果(如下)總是顯示該日誌不寫入該文件:
DateTime SystemUpTime Value EventTimer
37:07.6 (null) (null) (null)
37:07.6 (null) (null) (null)
37:07.6 (null) (null) (null)
37:07.6 (null) (null) (null)
37:07.7 (null) (null) (null)
37:07.7 (null) (null) (null)
我認爲我在創建我的appender時在我的app.config文件中做錯了什麼。它在我創建一個根appender並在根級別引用它時起作用,但是當我創建記錄器並以這種方式引用appender時,它似乎失敗了。我沒有想法 - 建議?謝謝。