2013-02-24 145 views
4

我想使用石英2.1.2伐木,但我不斷收到以下輸出,當我調試:Quartz.NET - 沒有配置節<普通/日誌>發現 - 抑制日誌輸出

no configuration section found - suppressing logging output

這裏是我的的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> 

這裏是我的實例調度代碼:

private IScheduler scheduler; 

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

我在做什麼錯?

UPDATE:

好了,有一件事我做錯了是不包括在我的單元測試項目App.config文件。一旦我做到了,我得到了一個不同的錯誤:

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

我沒有看到log4net的在Common.Logging命名空間,所以我說通過包管理器的DLL,但我仍然得到同樣的錯誤。我正在使用Common.Logging版本2.1.2。任何想法,爲什麼我仍然有問題?

+0

如果您得到'無法創建類型'異常,它還應包含內部異常,其中包含有關爲何無法創建類型的更多詳細信息。 – sgmoore 2013-02-25 10:02:50

回答

3

首先檢查你是否有所有的軟件包(程序集)更新。 這是我的NuGet packages.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不會下載最新的版本。

然後檢查你的App.config。你應該有這個綁定:

<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> 

我想你使用了錯誤的appender。您似乎想要在文件中編寫日誌,但是您使用的是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" /> 
+0

在發佈此答案之後,Common.Logging.Log4Net軟件包已更改爲使用其他軟件包來訪問每個Log4Net版本,並且每個不同的軟件包版本使用不同的程序集名稱。因此,要使上面的factoryAdapter配置生效,您必須在程序集名稱中包含版本號。因此,例如,如果您使用的是Common.Logging.Log4Net1213,則需要在config中包含以下內容: 2016-01-08 22:36:41

0

嘗試把Common.Logging庫在同一個文件夾作爲Quartz庫(C5也應該有)。據我所知,你不必從Visual Studio中引用它。

0

您可以安裝Common.Logging.Log4Net1211並更改appsetting如下

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

需要注意的是DLL名稱變更爲 「Common.Logging.Log4Net1211」。