Quartz.Net - 使用log4net进行常见日志记录

7
我正在尝试实现Quartz.Net。只要没有配置日志记录,一切正常(调试输出显示“未找到配置部分-抑制日志记录输出”)。
当启用日志记录时,我会收到以下错误:无法从配置部分'common/logging'获取Common.Logging的配置。
内部例外:创建公共/日志处理程序的配置部分处理程序时出错:无法创建类型'Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4net' 我使用了多个资源,如此文档来验证我的配置,但据我所见应该是正确的。
我的app.config:
  <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.Log4net">
        <arg key="configType" value="INLINE" />
      </factoryAdapter>
    </logging>
  </common>  
  <log4net>
    <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
      <layout type="log4net.Layout.PatternLayout">
        <param name="ConversionPattern" value="%-6p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
      </layout>
    </appender>
    <root>
      <level value="DEBUG" />
      <appender-ref ref="ConsoleAppender" />
    </root>
  </log4net>
  <quartz>
    <add key="quartz.scheduler.instanceName" value="Driver.Service.Scheduler" />
    <add key="quartz.threadPool.type" value="Quartz.Simpl.SimpleThreadPool, Quartz" />
    <add key="quartz.threadPool.threadCount" value="10" />
    <add key="quartz.threadPool.threadPriority" value="2" />
    <add key="quartz.jobStore.misfireThreshold" value="60000" />
    <add key="quartz.jobStore.type" value="Quartz.Simpl.RAMJobStore, Quartz" />
  </quartz>

我引用了以下程序集:
quartz.dll,版本2.01.100
common.logging.dll,版本2.0.0.0
common.logging.log4net.dll,版本2.0.0.0
log4net.dll,版本1.2.10.0

我找不到错误的原因。欢迎提供任何帮助,显然我忘记了某些东西...
3个回答

12

我们在升级到新版本的Common.Logging.Log4Net时遇到了类似的情况,其中DLL名称从Common.Logging.Log4Net更改为Common.Logging.Log4Net1211

因此,我们修改了配置文件以更改DLL名称:

<factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
无论如何,这个错误明确表明缺少 DLL。

更多关于此的信息可以在以下网址找到:https://github.com/net-commons/common-logging/wiki/Common.Logging-Packaging-and-Versions - James John McGuire 'Jahmic'

5

请检查Common.Logging.Log4net.dll是否被复制到您的bin输出文件夹中。

此外,您确定您的内部异常没有内部异常(或者可能有几个级别的内部异常)吗?


我已经检查过所需的dll文件是否已复制到我正在构建的库的bin文件夹中。但我没有检查测试控制台应用程序的bin文件夹,这就是它们缺失的地方。谢谢! - DirkV

0

我不确定,但在你的常见/日志配置部分,有一次写成了log4net,而另一次则是log4Net(大写字母):

  <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">

谢谢指出。我将其与我下载并修改的一个工作的Quartz示例进行了比较。然而,没有结果。 - DirkV

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接