ハードウェアデバイスのベンダーRest APIに接続するRESTエンドポイントの統合テストを進めています。私のソフトウェアは、物理的なデバイスで定期的にテストする必要があります。テストプロジェクト(VSTest VS 2015)を作成し、テストハーネスにログを追加したい。 log4netには膨大な量の文書があることに気づいていますが、それでも動作させることはできません。私の目標は、コンソールとファイルにもログを記録することです。ベンダーは、テストが完了したことをログファイルで検証する必要があります。統合テスト用にVS2015で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>
は、私がテストExplorerがAssembly.Infoファイルを読み込むとは思わないが、私は念の参照が含まれています。
[assembly: log4net.Config.XmlConfigurator(Watch = false)]
私は考えることができるすべてを試しました。私はアイデアがありません。どんな助けもありがとう。
あなたが実際に間違っているものを言っていないので、私はあなたが期待する場所に作成されていないファイルを推測しています。しかし、いくつかの注意点:1)スタンドアロンのlog4net設定ファイルは ''セクションにラップする必要はありません。 2) "log4net.properties"ファイルから設定をロードしていますが、それはあなたが期待する場所に存在していますか? 3)log4netの内部デバッグを有効にし、その出力をチェックします。 –
stuartd
代わりにNLogを使用すると考えましたか?私は、設定へのアプローチのほうがはるかに簡単だと感じました。そして、私が知る限りでは、すべての同じ機能を提供しています。 –
ありがとうございます。私はこの問題に遅れてごめんなさい。 VSの緑色の塊を取り除くために使用していたタグを削除しました。私は、log4nt.propertiesファイルが読み込まれていることを確認しました。私は先に進み、働いている新しい機能を書いた - 私は下に投稿します。 –
Shawn