0

Я использую log4net в тестовом проекте VB.NET 3.5 2010. Я ломаю себе голову и искал ответы на все вопросы, но я не могу создать файл журнала. Я бегу от IDE.log4net не регистрируется в VB.NET Тестовый проект

В сборке:

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="MyApp.Test.dll.log4net", Watch:=True)> 

В файле MyApp.Test.dll.log4net (изначально я не завернуть с элементом конфигурации, но это не сработало). Файл имеет свойство 'Копировать всегда':

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <configSections> 
    <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,log4net"/> 
    </configSections> 
    <log4net> 
<appender name="FA" type="log4net.Appender.FileAppender"> 
    <file value="c:\example.log" /> 
    <appendToFile value="true" /> 
    <layout type="log4net.Layout.PatternLayout"> 
    <conversionPattern value="%level %thread %logger - %message%newline" /> 
    </layout> 
</appender> 
<root> 
    <level value="DEBUG" /> 
    <appender-ref ref="FA" /> 
</root> 
    </log4net> 
</configuration> 

В классе UnitTest.vb переменной

Private Shared ReadOnly log As ILog = LogManager.GetLogger(GetType(UnitTest)) 

В методе UnitTest.vb

log.Fatal("LogTest() runnng test with log4net") 

Однако не повезло.

+0

Все еще взломать. Я могу сделать эту работу внутри консольного проекта. Почему не при тестировании тестового проекта? –

+1

В качестве теста попробуйте выполнить жесткое кодирование местоположения файла Configfile в файле AssemblyInfo. В большинстве тестовых сред используется теневое копирование, и ваша dll копируется в другую папку и выполняется из этой папки и, следовательно, не может найти файл MyApp.Test.dll.log4net, который не был скопирован. (Не уверен, что будет правильным решением, если это проблема). – sgmoore

+0

@sgmoore. Спасибо, да, ваше описание звучит как проблема. Я нашел решение, которое работает ниже. Я удивлен, что файл конфигурации log4net не включен в «теневую копию», учитывая настройку «всегда копировать». –

ответ

0

Хорошо понял это благодаря этому link

он работает из каталога TestResults, а не там, где я ожидал. Это сделало трюк в сборке:

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="..\..\..\WSIB.KCEC.ESB.Test\TempLog4net.exe.log4net", Watch:=True)> 
Смежные вопросы