2012-01-25 3 views
2

Я использую NUnit для тестирования проекта, и я хотел бы настроить мои тесты для установки Common.Logging программным способом для использования Log4Net. Вот что я пытался:Конфигурирование Log4NetLoggerFactoryAdapter Programmatically

 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 (Text Output).

ответ

0

Итак, вот что я в итоге сделал - он соответствует моей цели, чтобы увидеть результат в консоли NUnit runner, а также я добавил добавление скользящего регистратора файлов.

В тестовом классе:

[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? – tofutim

+0

Не помните - возможно, в тестовом проекте –

2

Всего головы вверх, Common.Logging поставляется с кучей по умолчанию log-адаптеры - один из которых является консольным приложением.

Использование этого метода устраняет необходимость сохранения конфигурации регистратора в тестовых сборках.

конфигурации является один лайнер в тестовом приспособлении:

Common.Logging.LogManager.Adapter = new Common.Logging.Simple.ConsoleOutLoggerFactoryAdapter(); 
Смежные вопросы