我正在使用Quartz.net。目前我发布了配置log4net以将日志写入文件的问题。它不断将日志条目写入控制台。
这是我的App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<sectionGroup name="common">
<section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
</sectionGroup>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />
</configSections>
<common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
<arg key="configType" value="INLINE" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file type="log4net.Util.PatternString" value="Logs\Main-%date{yyyy-MM-dd_HH-mm-ss}.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%2thread] %-5level - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="FileAppender" />
</root>
</log4net>
<quartz>
<add key="quartz.scheduler.instanceName" value="MyScheduler" />
<add key="quartz.threadPool.threadCount" value="3" />
<add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
</quartz>
</configuration>
以下是我尝试在c#代码中设置记录器的方法:
var nameValueCollection = new Common.Logging.Configuration.NameValueCollection();
var adapter = new Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter(nameValueCollection);
Common.Logging.LogManager.Adapter = adapter;
我现在没有想法了。将不胜感激任何帮助。
答案 0 :(得分:3)
配置看起来正确。最有可能手动设置Common.Logging.LogManager.Adapter
会覆盖配置中设置的适配器。
我正在使用带有log4net适配器的Quartz.net,几乎完全相同的配置,它可以按预期工作,而无需在代码中使用任何Common.Logging API。