Я работаю над тестом интеграции для конечной точки REST, которая соединяется с поставщиками Rest Api на аппаратном устройстве. Мое программное обеспечение необходимо периодически проверять на физическом устройстве. Я создал тестовый проект (VSTest VS 2015), и я хочу добавить журнал в свой тестовый жгут. Я понимаю, что в log4net имеется огромное количество документации, но я все еще не могу заставить ее работать. Моя цель - войти в консоль, а также в файл. Поставщик хочет, чтобы файл журнала подтвердил, что мои тесты завершены.Как настроить log4net с VS 2015 для теста интеграции?
Во-первых, я инициализирую log4net для чтения автономного файла.
using log4net.Config;
using log4net;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System.Diagnostics;
namespace MyProgram
{
[TestClass]
public class AssemblyInitializer
{
private static ILog log = null;
[AssemblyInitialize]
public static void Configure(TestContext Context)
{
Debug.WriteLine("Starting log4net setup and configuration");
XmlConfigurator.Configure(new FileInfo("log4net.properties"));
log = LogManager.GetLogger(typeof(AssemblyInitializer));
log.Debug("log4net initialized for Integration Test");
Debug.WriteLine("Completed log4net setup and configuration");
}
}
}
Мои log4net.properties Файл:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<log4net>
<appender name="ConsoleAppender" type="log4net.Appender.ConsoleAppender">
<layout type="log4net.Layout.PatternLayout">
<conversionpattern value="%date [%thread] %-5level %logger{1} - %message%newline"/>
</layout>
</appender>
<appender name="FileAppender" type="log4net.Appender.FileAppender">
<file value="IntegrationTests.log" />
<appendToFile value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger [%property{NDC}] - %message%newline" />
</layout>
</appender>
<root>
<level value="DEBUG">
<appender-ref ref="ConsoleAppender"/>
<appender-ref ref="FileAppender"/>
</level>
</root>
</log4net>
</configuration>
Я не думаю, что исследователь Test считывает файл Assembly.Info, но я включил ссылку на всякий случай.
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
Я пробовал практически все, что я могу придумать. У меня нет идей. Любая помощь будет оценена по достоинству.
Вы на самом деле не сказали, что случилось, поэтому я предполагаю, что файл не создается в том месте, которое вы ожидаете. Но несколько примечаний: 1) автономный конфигурационный файл log4net не нужно обертывать в разделе ''. 2) вы загружаете конфигурацию из файла «log4net.properties», но существует ли это в том месте, которое вы ожидаете? 3) включить внутреннюю отладку log4net и проверить результат. –
stuartd
Вы считали, что вместо этого используете NLog? Мне было гораздо легче обернуть голову вокруг их подхода к настройке. И насколько я могу судить, он предлагает все те же функции. –
Благодарим вас за комментарии. Я просто возвращаюсь к этой проблеме, так что извините за задержку. Я удалил теги, которые я использовал, чтобы избавиться от зеленых squigglies в VS. Я проверил, что файл log4nt.properties читается. Я пошел вперед и написал новую функцию, которая работает - я опубликую ниже. –
Shawn