2012-09-28 29 views
3

在我的web.config我有以下幾點:第二附加器不工作

<log4net> 
    <appender name="mainLog" 
     type="log4net.Appender.FileAppender"> 
     <file value="Log/Log.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%newline%date [%thread] %-5level %logger - %message%newline" /> 
     </layout> 
    </appender> 
    <appender name="linqLog" 
     type="log4net.Appender.FileAppender"> 
     <file value="Log/Log.txt" /> 
     <appendToFile value="true" /> 
     <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="%message%newline" /> 
     </layout> 
    </appender> 

    <logger name="MainLogger"> 
     <level value="ALL" /> 
     <appender-ref ref="mainLog" /> 
    </logger> 
    <logger name="LinqLogger"> 
     <level value="ALL" /> 
     <appender-ref ref="linqLog" /> 
    </logger> 
    </log4net> 

稱爲「mainLog」第一附加器正在工作。但是第二個叫做「linqLog」的不是。如果我註釋掉「mainLog」,那麼「linqLog」就起作用。

在我的Global.asax文件我有以下幾點:

protected void Application_Start(object sender, EventArgs e) 
     { 
      XmlConfigurator.Configure(); 
     } 

下面是我美其名曰:

public static void LogMessage(string message, string loggerName) 
     { 
      ILog log = LogManager.GetLogger(loggerName); 
      log.Info(string.Format(message)); 
     } 


LogMessage("My test message for MainLogger", "MainLogger"); 
LogMessage("My test message for LinqLogger", "LinqLogger"); 

任何想法我做了什麼錯?

+1

我不認爲log4net的支持兩個附加目的地記錄到同一個文件,你有這個理由嗎? –

+0

啊..不知道。我這樣做是因爲我希望消息的格式根據來源不同而不同。 –

+1

@LukeHutton你可能想要真正創建一個問題的答案;這樣我可以給你答案,因爲你是對的。 =) –

回答

0

Log4net不支持寫入同一文件的兩個appender,但需要將鎖定模型設置爲「MinimalLock」。

<lockingModel type="log4net.Appender.FileAppender+MinimalLock" />