0

我在VB.NET 3.5 2010測試項目中使用log4net。我一直在絞盡腦汁尋找答案,但我無法生成一個日誌文件。我正在從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") 

但是沒有運氣。

+0

仍然黑客攻擊。我能夠在控制檯項目中完成這項工作。爲什麼不從測試項目運行測試? –

+1

作爲測試,請嘗試在AssemblyInfo文件中硬編碼Configfile的位置。大多數測試環境使用影子複製,並且您的dll被複制到另一個文件夾並從該文件夾執行,因此找不到未被複制的MyApp.Test.dll.log4net文件。 (如果這是問題,不確定適當的解決方案是什麼)。 – sgmoore

+0

@sgmoore。謝謝,你的描述聽起來像是問題。我發現了一個可以在下面使用我驚訝地發現log4net配置文件沒有包含在'shadow copy'中,因爲'always copy'設置。 –

回答

0

好理解了它得益於此link

它是從TestResults目錄中運行,而不是我預想的地方。這在組裝中有這樣的伎倆:

<Assembly: log4net.Config.XmlConfigurator(ConfigFile:="..\..\..\WSIB.KCEC.ESB.Test\TempLog4net.exe.log4net", Watch:=True)>