Quartz.net和Common.Logging - 使用Log4Net

时间:2010-02-10 12:38:50

标签: c# logging log4net quartz.net common.logging

我在Windows服务中使用Quartz.net。 目前,触发器没有触发 - 我想使用日志记录找出原因。

我已经编辑了Windows服务的配置文件:

<configSections>
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net" />

    <sectionGroup name="common">
      <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging" />
    </sectionGroup>
</configSections>

<appSettings>
    <!--specific win service settings here-->
</appSettings>

<common>
    <logging>
        <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4Net">
            <arg key="configType" value="INLINE"/>
            <arg key="configFile" value="c:\sched.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>

我的文件结构如下:

C:\ CompanyName - 所有项目的根目录
C:\ CompanyName \ build \ bin - 我的解决方案中所有项目/类库的输出目录
C:\ CompanyName \ lib - 第三方二进制文件/ dll的放置位置

在我的Windows服务项目中,我引用了Quartz(在C:\ CompanyName \ lib文件夹中)

我还添加了对Common.Logging.Log4net.dll的引用

当我测试我的应用时,我收到以下错误:

  

无法加载文件或程序集   'Common.Logging,Version = 2.0.0.0,   文化=中性,   PublicKeyToken = af08829b84f0328e'或   其中一个依赖项。位于   程序集的清单定义   与程序集引用不匹配。   (HRESULT的例外情况:   0x80131040) “:” Common.Logging,   版本= 2.0.0.0,文化=中立,   公钥= af08829b84f0328e

2 个答案:

答案 0 :(得分:6)

我想你可能有错误的Common.Logging版本。 Quartz.Net的当前版本使用Common.Logging 1.2版,而不是2.0版。如果您需要使用2.0,请尝试使用2.0版本的常用日志记录重新编译quartz.net或尝试使用redirecting the assembly

答案 1 :(得分:0)

使用this post调试装配加载,看看是否可以查明不匹配的原因。