0
我正在使用log4net,我正在嘗試使用過濾器,以便只有一個appender可以寫入特定的文件。log4net過濾器不工作
有誰能告訴我爲什麼這不起作用?我想只有所謂的「ErrorLogFileAppender」寫入到該文件的附加器..
<appender name="ErrorLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="..\\WebErrors.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%d [%t] %-5p %logger{1} %m%n" />
</layout>
<filter type="log4net.Filter.LoggerMatchFilter">
<!-- allows this sub-namespace to be logged... -->
<loggerToMatch value="ErrorLogFileAppender" />
</filter>
</appender>
這是我得到的是應該能夠寫入文件記錄器:
private static ILog _fileLogger = LogManager.GetLogger("ErrorLogFileAppender");
但這記錄器(在另一個類中)也可以寫同一個文件,這是錯誤的:
private static ILog _log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
FWIW,我想你」重新偏離log4net被設計爲使用這種方法的方式 - 你的代碼不應該知道它正在記錄到一個'ErrorLogFileAppender',它應該只是登錄到正確的級別 - 擔心你的配置中實際記錄的內容和地方。 –
好想法。將看一些變化。但我的過濾器的問題仍然存在,雖然 – MrProgram
哦,是的,你仍然需要過濾器等以某種方式工作,如果你想只記錄特定組件的錯誤。或者只設置該記錄器來使用該appender ... –