2012-01-25 11 views
2

NUnitを使用してプロジェクトをテストしていますが、Log4Netを使用するようにCommon.Loggingをプログラムで設定するテストを設定したいと思います。次のファイルでLog4NetLoggerFactoryAdapterをプログラムで設定する

 NameValueCollection config = new NameValueCollection(); 
     //config.Add("configType", "EXTERNAL"); 

     var stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("DevelopMENTALMadness.Data.Sql.Tests.loggerconfig.xml"); 
     XmlConfigurator.Configure(stream); 

     LogManager.Adapter = new Log4NetLoggerFactoryAdapter(config); 

:ここで私が試したものだ

<log4net> 
<appender name="A1" type="log4net.Appender.ConsoleAppender"> 

    <layout type="log4net.Layout.PatternLayout"> 
     <conversionPattern value="[%thread] %-4timestamp %-5level %logger %ndc - %message%newline" /> 
    </layout> 
</appender> 

<!-- Set root logger level to DEBUG and its only appender to A1 --> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="A1" /> 
</root> 

そして

 NameValueCollection config = new NameValueCollection(); 
     //config.Add("configType", "EXTERNAL"); 

     var x = new ConsoleAppender { Layout = new PatternLayout("[%thread] %-4timestamp %-5level %logger %ndc - %message%newline") }; 
     BasicConfigurator.Configure(x); 

     LogManager.Adapter = new Log4NetLoggerFactoryAdapter(config); 

しかし、それは私が指定するか、またはパターンを使用しませんか"configType"行のコメントを外すと、何も表示されません。私はレイアウトを選択しようとしています。テストをデバッグするときに、NUnitランナー(テキスト出力)にログ出力が表示されます。

答えて

0

これは私がやったことです。NUnitランナーコンソールで出力を見たいという目標を達成しました。さらにローリングファイルロガーも追加しました。テストクラスで

[TestFixtureSetUp] 
public void Init() 
{ 
    BasicConfigurator.Configure(new ConsoleAppender()); 
} 

その後、私は(常にコピー)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"/> 
      </factoryAdapter> 
     </logging> 
    </common> 

    <log4net debug="false"> 
     <appender name="RollingFileAppender" type="log4net.Appender.RollingFileAppender"> 
      <file value="./Tests.log" /> 
      <lockingModel type="log4net.Appender.FileAppender+MinimalLock"/> 
      <appendToFile value="true" /> 
      <rollingStyle value="Size" /> 
      <maxSizeRollBackups value="10" /> 
      <maximumFileSize value="50MB" /> 
      <staticLogFileName value="true" /> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
      </layout> 
      <threshold value="DEBUG" /> 
     </appender> 
     <appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender"> 
      <layout type="log4net.Layout.PatternLayout"> 
       <conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline"/> 
      </layout> 
     </appender> 
     <root> 
      <priority value="ALL"/> 
      <appender-ref ref="RollingFileAppender"/> 
      <appender-ref ref="ConsoleAppender" /> 
     </root> 
    </log4net> 
</configuration> 
+0

そうはapp.configは、NUnitのクラスに座っている:

の設定は、テスト・フィクスチャ内の1つのライナーのですか? – tofutim

+0

覚えていない - おそらくテストプロジェクト –

2

ただ、頭、Common.Loggingは、デフォルトの束が付属していますログアダプタ - その1つはコンソールアペンダです。

これを使用すると、テストアセンブリでロガー構成を維持する必要がなくなります。

Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter(); 
関連する問題