Log4net Quartz.NET-无配置部分<;通用/日志记录>;发现-正在抑制日志输出

Log4net Quartz.NET-无配置部分<;通用/日志记录>;发现-正在抑制日志输出,log4net,quartz.net,Log4net,Quartz.net,我正在尝试将Quartz 2.1.2用于日志记录,但在调试时,我一直得到以下输出: 未找到配置节-正在抑制日志记录 输出 这是我的App.config文件: <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSections> <sectionGroup name="common"> <section name="logging" type="Co

我正在尝试将Quartz 2.1.2用于日志记录,但在调试时,我一直得到以下输出:

未找到配置节-正在抑制日志记录 输出

这是我的App.config文件:

<?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>
我做错了什么

更新:

好吧,有一件事我做错了,那就是没有在我的单元测试项目中包含App.config文件。一旦我这么做了,我就犯了一个不同的错误:

无法创建类型“Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter,Common.Logging.Log4Net”


我在Common.Logging名称空间中没有看到Log4Net,所以我通过包管理器添加了DLL,但仍然得到相同的错误。我使用的是Common.Logging版本2.1.2。知道我为什么仍然有问题吗?

首先检查您是否有所有的软件包(程序集)更新。 这是我的nugetpackages.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>
我想你用错了附件。您似乎想在文件中写入日志,但使用的是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" />

尝试将Common.Logging库与Quartz库放在同一文件夹中(C5也应该在那里)。据我所知,您不必从Visual Studio中引用它。

您可以安装并更改应用程序设置,如下所示

  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
        <arg key="configType" value="INLINE"/>
      </factoryAdapter>
    </logging>
  </common>


请注意,dll名称已更改为“Common.Logging.Log4Net1211”。

如果出现“无法创建类型”异常,则它还应包含内部异常,其中包含有关无法创建类型原因的更多详细信息。发布此答案后,Common.Logging.Log4Net包已更改为使用不同的包访问每个Log4Net版本,并且每个不同的包版本使用不同的程序集名称。因此,要使上述factoryAdapter配置正常工作,必须在程序集名称中包含版本号。因此,例如,如果您使用的是Common.Logging.Log4Net1213,则需要在配置中包含以下内容:
<param name="File" value="Scheduler.log" />
  <common>
    <logging>
      <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net1211">
        <arg key="configType" value="INLINE"/>
      </factoryAdapter>
    </logging>
  </common>