回答
是的,只需將多個FileAppenders添加到您的記錄器。例如:
<log4net>
<appender name="File1Appender" type="log4net.Appender.FileAppender">
<file value="log-file-1.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<appender name="File2Appender" type="log4net.Appender.FileAppender">
<file value="log-file-2.txt" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="File1Appender" />
<appender-ref ref="File2Appender" />
</root>
</log4net>
不錯.. :)但是,我需要爲每個日誌文件編寫單獨的消息。我怎麼能寫信給特定的appender? 感謝。 ofer – ofer 2009-09-03 10:49:44
@ ofer-請參閱我的答案如何做到這一點。 – RichardOD 2009-09-03 15:48:46
如果您希望File1Appender記錄DEBUG錯誤並使用File2Appender記錄錯誤錯誤,該怎麼辦? – JsonStatham 2014-05-08 13:48:22
Vinay是正確的。回答你在他的回答中的評論,你可以這樣做的一種方法如下:
<root>
<level value="ALL" />
<appender-ref ref="File1Appender" />
</root>
<logger name="SomeName">
<level value="ALL" />
<appender-ref ref="File1Appender2" />
</logger>
這就是我過去的做法。然後,像這樣對其他日誌:
private static readonly ILog otherLog = LogManager.GetLogger("SomeName");
,你可以得到你的正常記錄如下:
private static readonly ILog log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
閱讀文檔的loggers and appenders節以瞭解如何工作的。
我有這樣的*同*設置我的應用程序之一,它不工作對我來說:( – 2010-09-08 12:25:14
謝謝,工作就像一個魅力。 – VoodooChild 2012-09-26 00:02:46
這個討論是很老了......希望你能回答......我想你的方法,但兩個記錄器記錄相同的消息。作爲log.Info(「」)和otherLog .INFO(「」)消息寫入兩者同時進行的日誌文件。 – SutharMonil 2014-01-14 07:46:12
這些答案是有幫助的,但我想分享我的答案與app.config部分和C#代碼部分,所以有較少的猜測下一個人。
<log4net>
<appender name="SomeName" type="log4net.Appender.RollingFileAppender">
<file value="c:/Console.txt" />
<appendToFile value="true" />
<rollingStyle value="Composite" />
<datePattern value="yyyyMMdd" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="1MB" />
</appender>
<appender name="Summary" type="log4net.Appender.FileAppender">
<file value="SummaryFile.log" />
<appendToFile value="true" />
</appender>
<root>
<level value="ALL" />
<appender-ref ref="SomeName" />
</root>
<logger additivity="false" name="Summary">
<level value="DEBUG"/>
<appender-ref ref="Summary" />
</logger>
</log4net>
然後在代碼:
ILog Log = LogManager.GetLogger("SomeName");
ILog SummaryLog = LogManager.GetLogger("Summary");
Log.DebugFormat("Processing");
SummaryLog.DebugFormat("Processing2"));
這裏C:/Console.txt將包含 「處理」 ... 和\ SummaryFile.log將包含 「Processing2」
我想要將所有消息記錄到根記錄器,並且要單獨記錄有錯誤,以下是如何完成的:
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="allMessages.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
</appender>
<appender name="ErrorsFileAppender" type="log4net.Appender.FileAppender">
<file value="errorsLog.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date %-5level %logger - %message%newline" />
</layout>
<filter type="log4net.Filter.LevelRangeFilter">
<levelMin value="ERROR" />
<levelMax value="FATAL" />
</filter>
</appender>
<root>
<level value="ALL" />
<appender-ref ref="FileAppender" />
<appender-ref ref="ErrorsFileAppender" />
</root>
</log4net>
注意使用過濾元件。
使用下面的XML配置配置登錄到兩個或多個文件,
<log4net>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="logs\log.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender2" type="log4net.Appender.RollingFileAppender">
<file value="logs\log1.txt" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
</appender>
<root>
<level value="All" />
<appender-ref ref="RollingLogFileAppender" />
</root>
<logger additivity="false" name="RollingLogFileAppender2">
<level value="All"/>
<appender-ref ref="RollingLogFileAppender2" />
</logger>
</log4net>
上面的XML配置登錄到兩個不同的文件。
爲了得到記錄器編程的具體實例,
ILog logger = log4net.LogManager.GetLogger ("RollingLogFileAppender2");
您可以附加log4net的根元素中兩個或兩個以上的appender元素用於登錄到數倍的文件。
關於上述XML配置結構或附加器是最適合你的應用程序,從下面的鏈接瞭解詳細更多信息,
https://logging.apache.org/log4net/release/manual/configuration.html https://logging.apache.org/log4net/release/sdk/index.html
希望這會有所幫助。
- 1. 多個配置文件與Log4Net
- 2. log4net - 使用多個配置文件進行配置
- 3. 配置log4net根據日誌級別寫入不同的文件
- 4. Log4net無法寫入文件
- 5. Log4net沒有寫入文件
- 6. Log4net可以有多個appender寫入同一個文件嗎?
- 7. 我可以有多個log4net配置文件嗎?
- 8. 需要修改這個log4net的寫入到文件中,寫入多個文件的能力
- 9. 多個配置文件 - 春豆注入
- 10. Log4Net沒有寫入輸出文件
- 11. 無法寫入日誌文件log4net
- 12. NServiceBus和Log4Net外部配置文件
- 13. 使用xml文件配置log4net
- 14. 寫入多個NCDF4文件
- 15. 使用Log4Net寫入遠程文件共享位置
- 16. Log4Net配置XML
- 17. 多個Eclipse配置文件
- 18. 多個TypeScripts文件配置
- 19. 寫入配置文件問題
- 20. Log4J 2 XML配置不寫入文件
- 21. 全局配置文件寫入編碼
- 22. Joomla無法寫入配置文件
- 23. 多彈簧配置文件(每個配置文件一個)
- 24. log4net的配置不加載配置文件
- 25. 如何在Windows XP和7上將log4net配置爲寫入%LOCALAPPDATA%?
- 26. 使用log4net寫入兩個不同的文件
- 27. 如何停止log4net寫入兩個單獨的文件
- 28. 模板Log4Net配置
- 29. 何時配置Log4Net?
- 30. log4net配置問題
您無法登錄分離附加目的地 - 你需要配置不同的記錄器和附加適當的附加器到每一個。然後將不同的消息記錄到不同的記錄器。 – 2009-09-03 11:51:54
以下是我的代碼,如配置做到了:http://stackoverflow.com/questions/27846157/configure-log4net-to-write-to-different-log-files-no-config-files – 2015-01-09 21:34:14