c# - 同一解决方案上的两个 log4net 配置文件
问题描述
我有一个由多个项目组成的解决方案。它是一个桌面应用程序,我需要为这些项目设置两个单独的 log4net 配置,因为一个项目包含一个使用 log4net 本身的库。在 App.config 中配置的一个项目 log4net 和另一个项目中,它在 log4net.configuration 文件中配置。
下面是一个配置文件'''
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG"/>
<appender-ref ref="SmtpAppender"/>
<appender-ref ref="LogFileAppender"/>
<appender-ref ref="ColoredConsoleAppender"/>
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="D:\seperatelog.txt"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Date" />
<datePattern value="'On_'yyyy-MM-dd'.log'" />
<appendToFile value="true" />
<maxSizeRollBackups value="14" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
</layout>
</appender>
<appender name="ColoredConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
</layout>
</appender>
<appender name="SmtpAppender" type="log4net.Appender.SmtpAppender">
<to value="bobby.chopra@prcm.com"/>
<from value="TagFileUploader@prcm.com"/>
<subject value="TagFileUploader ERROR"/>
<smtpHost value="prc-mn-ex01"/>
<bufferSize value="512"/>
<lossy value="true"/>
<evaluator type="log4net.Core.LevelEvaluator">
<threshold value="ERROR"/>
</evaluator>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
</layout>
</appender>
<appender name="cargillsJournal" type="log4net.Appender.FileAppender">
<param name="File" value="D:\BankInABoxffffff-log.txt"/>
<param name="AppendToFile" value="true"/>
<rollingStyle value="Date" />
<datePattern value="'On_'yyyy-MM-dd'.log'" />
<appendToFile value="true" />
<maxSizeRollBackups value="14" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %level %logger - %message%newline" />
</layout>
<staticLogFileName value="true"/>
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger: %message%newline"/>
</layout>
</appender>
</log4net>
其他配置文件如下
<log4net>
<root>
<level value="ALL" />
<appender-ref ref="console" />
</root>
<appender name="console" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date - %message%newline" />
</layout>
</appender>
<appender name="RollingLogFileAppender" type="log4net.Appender.RollingFileAppender">
<file value="rolling-log.txt" />
<appendToFile value="true" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="100" />
<rollingStyle value="Size" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<header value="[Header] " />
<footer value="[Footer] " />
<conversionPattern value="%date [%thread] %-5level %logger [%ndc] - %message%newline" />
</layout>
</appender>
<logger name="LoggingExample">
<!-- <appender-ref ref="B" /> -->
<level value="ALL" />
<appender-ref ref="RollingLogFileAppender" />
</logger>
</log4net>
这两个日志文件正确加载,但它们都写入同一个日志文件seperatelog.txt
我需要的是为这两个配置创建两个单独的文件。
解决方案
似乎您最好不要在 app.config 中而是在专用的 XML 文件中定义 log4net 配置。XML 文件的名称可以根据某种约定组成,因此您的项目将知道每个 log4net 配置 XML 专用于什么。
您将能够使用 XmlConfigurator.Configure(...) 函数配置您的 log4net
推荐阅读
- timer - ESP32 Arduino:BluetoothSerial.h 的 .println() 破坏了其他内核上的硬件定时器中断
- tensorflow - ImportError:python39.dll 的模块使用与此版本的 Python 冲突
- php - 如何在输入框中的 PHP 中添加空格?
- pdf - 如何引用预格式化 PDF (QDF) 中的文本内容?
- c# - 在 Android 和 iOS 上点击自定义按钮时实现“突出显示效果”而不是“涟漪效果”
- swift - 使用 void* 访问 MTLBuffer 内容
- javascript - 如何仅在按钮显示特定文本时才显示弹出窗口
- javascript - caches.delete 没有删除任何内容
- ios - 为 AARCH64 iOS Darwin 执行程序集 Shellcode
- javascript - 如何使用对象数组中的值获取对象数组