2013-12-19 81 views
0

我遇到了一個問題,當我配置兩個appender並嘗試向apender中的一個寫入日誌消息時,也會將相同的消息寫入另一個appenders文件。下面是配置部分,兩個不同的FileAppender在兩個日誌文件中寫入相同的日誌消息

<log4net> 
<root> 
    <level value="INFO" /> 
    <appender-ref ref="ErrorLog" /> 
    <appender-ref ref="PayWinSrvLog" /> 
</root> 
<appender name="ErrorLog" type="log4net.Appender.FileAppender"> 
    <param name="File" value="E:\Webhome\FimFolders\BankWinserviceService\Error_Log.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <maxSizeRollBackups value="0" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <maximumFileSize value="2MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" /> 
    </layout> 
</appender> 
<appender name="PayWinSrvLog" type="log4net.Appender.FileAppender"> 
    <param name="File" value="E:\Webhome\FimFolders\BankWinserviceService\PayWinSrv_Log.txt" /> 
    <param name="AppendToFile" value="true" /> 
    <maxSizeRollBackups value="0" /> 
    <lockingModel type="log4net.Appender.FileAppender+MinimalLock" /> 
    <maximumFileSize value="2MB" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <param name="ConversionPattern" value="%d [%t] %-5p %c %m%n" /> 
    </layout> 
</appender> 

,這是我用我的Windows服務項目的啓動方法的唯一代碼。

protected override void Start() 
{ 
    ErrorLog = LogManager.GetLogger("ErrorLog"); 
    PayWinSrvLog = LogManager.GetLogger("PayWinSrvLog"); 
    XmlConfigurator.Configure(); 
    ErrorLog.Error("Error Message."); // this also get printed in PayWinSrv_Log.txt 
} 

我還包括線

[assembly: log4net.Config.XmlConfigurator(Watch = true)] 

原諒我的英語。

回答

2

你被Appenders和Logger弄糊塗了。一個日誌本身可以有多個appender(例如,你可以有一個SmtpAppender和一個FileAppender作爲錯誤日誌,但是你可能需要一個單獨的FileAppender來處理正常的消息)。由於您只配置根記錄器,使用<root>...,那麼這是唯一使用LogManager.GetLogger返回的日誌,在您的配置中它具有兩個FileAppender。

要配置多個,獨立的日誌,使用<logger標籤,然後爲每個日誌指定附加目的地:

<logger name="ErrorLog"> 
    <level value="INFO" /> 
    <appender-ref ref="ErrorLog" /> 
</logger> 
<logger name="PayWinSrvLog"> 
    <level value="INFO" /> 
    <appender-ref ref="PayWinSrvLog" /> 
</logger> 
+1

我不是越來越糊塗,但其對我的誤解。謝謝。 – Shashank

相關問題