gpt4 book ai didi

log4net - Quartz.NET - 找不到配置部分 - 抑制日志输出

转载 作者:行者123 更新时间:2023-12-01 02:27:44 24 4
gpt4 key购买 nike

我正在尝试使用 quartz 2.1.2 使用日志记录,但我在调试时不断收到以下输出:

no configuration section found - suppressing logging output



这是我的 应用程序配置文件:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<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.Log4Net">
<arg key="configType" value="INLINE"/>
<arg key="configFile" value="c:\Scheduler.log"/>
<arg key="level" value="INFO" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="EventLogAppender" type="log4net.Appender.EventLogAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%d [%t] %-5p %l - %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="EventLogAppender" />
</root>
</log4net>
</configuration>

这是实例化我的调度程序的代码:
private IScheduler scheduler;

public JobScheduler()
{
ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
this.scheduler = schedulerFactory.GetScheduler();
this.scheduler.Start();
}

我究竟做错了什么?

更新:

好的,所以我做错的一件事是我的单元测试项目中没有包含 App.config 文件。一旦我这样做了,我得到了一个不同的错误:

Unable to create type 'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net'



我没有在 Common.Logging 命名空间中看到 Log4Net,所以我通过包管理器添加了 DLL,但我仍然得到同样的错误。我正在使用 Common.Logging 2.1.2 版。任何想法为什么我仍然有问题?

最佳答案

首先检查您是否拥有所有软件包(程序集)更新。
这是我的 nuget 包.config:

<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Common.Logging" version="2.1.2" targetFramework="net35" />
<package id="Common.Logging.Log4Net" version="2.0.1" targetFramework="net40" />
<package id="log4net" version="1.2.10" targetFramework="net40" />
<package id="Quartz" version="2.1.2" targetFramework="net35" />
</packages>

我认为您必须强制更新 Common.Logging.Log4Net因为 Quartz.net 没有下载最新版本。

然后检查您的 应用程序配置 .你应该有这个绑定(bind):
  <runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="Common.Logging" publicKeyToken="af08829b84f0328e" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.1.2.0" newVersion="2.1.2.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>

我认为您使用了错误的附加程序。您似乎想将日志写入文件,但您使用的是 EventLogAppender .

如果您想使用文件系统,您可以尝试使用以下配置部分:
  <common>
<logging>
<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
<arg key="configType" value="INLINE" />
<arg key="level" value="INFO" />
</factoryAdapter>
</logging>
</common>
<log4net>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender">
<param name="File" value="c:\Scheduler.log" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
<root>
<level value="INFO" />
<appender-ref ref="LogFileAppender" />
</root>
</log4net>

您可能在尝试写入该文件夹时遇到权限问题。如果您的应用程序更改此设置,您想将日志放在 bin 文件夹中:
<param name="File" value="Scheduler.log" />

关于log4net - Quartz.NET - 找不到配置部分 <common/logging> - 抑制日志输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15053345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com