Я использую 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")
Однако не повезло.
Все еще взломать. Я могу сделать эту работу внутри консольного проекта. Почему не при тестировании тестового проекта? –
В качестве теста попробуйте выполнить жесткое кодирование местоположения файла Configfile в файле AssemblyInfo. В большинстве тестовых сред используется теневое копирование, и ваша dll копируется в другую папку и выполняется из этой папки и, следовательно, не может найти файл MyApp.Test.dll.log4net, который не был скопирован. (Не уверен, что будет правильным решением, если это проблема). – sgmoore
@sgmoore. Спасибо, да, ваше описание звучит как проблема. Я нашел решение, которое работает ниже. Я удивлен, что файл конфигурации log4net не включен в «теневую копию», учитывая настройку «всегда копировать». –