回答
是的,只需将多个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的不写入文件
- 7. Log4net没有写入文件
- 8. Log4net无法写入文件
- 9. log4net不写入文件
- 10. Log4net可以有多个appender写入同一个文件吗?
- 11. 我可以有多个log4net配置文件吗?
- 12. 如何将文本写入log4net文件
- 13. 跨多个项目共享log4net配置
- 14. 如何处理多个log4net配置?
- 15. 需要修改这个log4net的写入到文件中,写入多个文件的能力
- 16. Log4Net写入不同的文件
- 17. Log4Net没有写入输出文件
- 18. Log4net不写入日志文件
- 19. 无法写入日志文件log4net
- 20. 多个配置文件 - 春豆注入
- 21. 使用xml文件配置log4net
- 22. NServiceBus和Log4Net外部配置文件
- 23. cakephp多个域&配置::写入
- 24. 使用Log4Net写入远程文件共享位置
- 25. 写入多个文件
- 26. 写入多个NCDF4文件
- 27. log4net为每个log.info调用写入单个文件
- 28. Log4Net配置XML
- 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