我正在爲連接到硬件設備上的供應商Rest Api的REST端點進行集成測試。我的軟件必須定期在物理設備上進行測試。我創建了一個測試項目(VSTest VS 2015),我想將日誌記錄添加到我的測試工具中。我意識到log4net上有大量的文檔,但我仍然無法使它工作。我的目標是登錄到控制檯以及一個文件。供應商想要一個日誌文件來驗證我的測試已完成。如何使用VS 2015配置log4net進行集成測試?
首先,初始化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>
我不認爲測試資源管理器讀取Assembly.Info文件,但我包括在以防萬一的參考。
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
我已經試過幾乎所有我能想到的。我沒有想法。任何幫助,將不勝感激。
你實際上沒有說錯了什麼,所以我猜這個文件沒有在你期望的位置創建。但是有一些注意事項:1)獨立的log4net配置文件不需要被包裝在''部分中。 2)您正在從「log4net.properties」文件加載配置文件,但是它是否存在於您期望的位置? 3)啓用log4net內部調試,並檢查輸出。 –
stuartd
您是否考慮過使用NLog來代替?我發現圍繞他們的配置方法更容易。據我所知,它提供了所有相同的功能。 –
謝謝您的意見。我只是回到這個問題,所以很抱歉拖延。我刪除了我正在使用的標籤,以擺脫VS中的綠色漣漪。我驗證了正在讀取log4nt.properties文件。我繼續寫下了一個新的功能,這個功能正在工作 - 我會在下面發表。 –
Shawn