問題は、NUnit テスト ランナー (Visual Studio の resharper から実行する場合) が別のフォルダーからテストを実行する (テスト アセンブリをシャドウ コピーする) ため、完全な構成パスを指定しない限り、その時点で xml 構成を使用できないことです。
もちろん、基本構成を使用して、次のようにコードでロギング構成を指定することもできます。
log4net.Config.BasicConfigurator.Configure(
new log4net.Appender.ConsoleAppender {
Layout = new log4net.Layout.SimpleLayout()});
その後、テスト出力にログ出力が表示されます。
nunit で log4net を知っていて使用している限り、構成ファイルを使用したことはありません 、テストクラスコンストラクターに次の行を追加するだけです
BasicConfigurator.Configure();
サンプル テスト クラスを見たい場合は、ここに完全な回答があります
私の最善の推測は、あなたが次のようなことをすることです:
[TestFixture]
class DomainTests
{
protected static readonly ILog log = LogManager.GetLogger(typeof(DomainTests));
public void LoggingTests()
{
log4net.Config.XmlConfigurator.Configure();
}
[Test]
public void BasicLogTest()
{
log.Error("write my log entry already");
}
[SetUp]
RunBeforeAnyTests()
{
BasicConfigurator.Configure();
}
[TearDown]
RunAfterAnyTests()
{
// ...
}
また、app.config ファイルではなく Log4Net.config ファイルを使用したいと思います。以下は log4net.config ファイルの例です:
<log4net>
<!-- A1 is set to be a LogFileAppender -->
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender, log4net" >
<param name="File" value="C:\logging\log.txt" />
<file value="c:\logging\Main" />
<appendToFile value="true" />
<datePattern value="yyyyMMdd'.log'" />
<rollingStyle value="Composite" />
<staticLogFileName value="false" />
<maxSizeRollBackups value="-1" />
<maximumFileSize value="500MB" />
<!-- A1 uses PatternLayout -->
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-5level %logger - %message%newline" />
</layout>
</appender>
<!-- Set root logger level to DEBUG and its only appender to LogFileAppender -->
<root>
<!--<level value="OFF" />-->
<!--<level value="FATAL" />-->
<!--<level value="ERROR" />-->
<!--<level value="WARN" />-->
<!--<level value="INFO" />-->
<level value="DEBUG" />
<!--<level value="ALL" />-->
<appender-ref ref="LogFileAppender" />
</root>
</log4net>