log4net und nunit-tests, die meisten basic-Beispiel
Ich will versuchen, das Protokoll einige app-Nachrichten von meiner app. In diese situation will ich einfach nur zu zwingen, nunit arbeiten mit log4net. Ich fand einige Beispiel hier http://www.ofconsulting.com/PublicPortal/ofc-tech-blog/92-configure-log4net-with-nunit.html.
log4net ist confugured in der app.config wie hier:
<configSections>
<section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net"/>
</configSections>
<log4net>
<root>
<level value="DEBUG" />
<appender-ref ref="LogFileAppender" />
</root>
<appender name="LogFileAppender" type="log4net.Appender.RollingFileAppender" >
<param name="File" value="log.txt" />
<param name="AppendToFile" value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="10" />
<maximumFileSize value="10MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<param name="ConversionPattern" value="%-5p%d{yyyy-MM-dd hh:mm:ss} – %m%n" />
</layout>
</appender>
</log4net>
Und in mein test code ist folgender
[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");
}
Meinen test bestanden, aber nichts ist innen geschrieben log.txt Datei. Was mache ich falsch?
Ich will einfach nur, um es Ihnen so einfach wie möglich sein, um Nachrichten zu speichern, wie die Eingabe einer Anwendung, Anwendung beenden. Grüße.
Tut Log4Net normal arbeiten? Der Grund warum ich Frage ist, ich will wissen, ob wir gehen müssen, durch Ihren laden bis der Log4Net...
Auch, speichern Sie die Eingabe in Ihrem Klassennamen jedes mal, wenn ich diese kopieren/einfügen mein log zwischen den Klassen: private static readonly-ILog Datenlogger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
wie meinst du funktioniert es normalerweise ?:) Ich habe Hinzugefügt log4net Verweis auf mein test-Projekt und der rest des code ist hier gepostet, keine Fehlermeldung gegeben, im Laufenden test oder Gebäude prj.
Ich brauche ein paar konkrete Beispiel der Protokollierung mit nunit und app.config, wenn du etwas schon zu prüfen, wäre es toll.
wo ist das log.txt liegt? Ich habe kopiert den code und angegebenen c:\log.txt im app.config, dann funktioniert es perfekt.Versuchen Sie den vollständigen Pfad angeben für log.txt
Auch, speichern Sie die Eingabe in Ihrem Klassennamen jedes mal, wenn ich diese kopieren/einfügen mein log zwischen den Klassen: private static readonly-ILog Datenlogger = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
wie meinst du funktioniert es normalerweise ?:) Ich habe Hinzugefügt log4net Verweis auf mein test-Projekt und der rest des code ist hier gepostet, keine Fehlermeldung gegeben, im Laufenden test oder Gebäude prj.
Ich brauche ein paar konkrete Beispiel der Protokollierung mit nunit und app.config, wenn du etwas schon zu prüfen, wäre es toll.
wo ist das log.txt liegt? Ich habe kopiert den code und angegebenen c:\log.txt im app.config, dann funktioniert es perfekt.Versuchen Sie den vollständigen Pfad angeben für log.txt
InformationsquelleAutor panjo | 2012-06-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mein best guess wäre für Sie etwas wie das hier tun:
Würd ich auch verwenden, die Log4Net.config-Datei und nicht in der app.config-Datei, scheint es einfach sauberer. Hier ist ein Beispiel log4net.config-Datei:
InformationsquelleAutor
Das problem ist, dass der NUnit-test-runner (bei Ausführung von resharper in visual studio) läuft der test aus einem anderen Ordner (Schatten Kopien der test-assembly), also die xml-Konfiguration ist nicht verfügbar, an diesem Punkt, es sei denn, Sie geben den vollständigen config Pfad.
Könnte man natürlich die basic-Konfiguration und geben Sie die logging-Konfiguration im code, wie:
Sollten Sie die log-Ausgabe in der test-Ausgabe nach.
InformationsquelleAutor
Ich lange, wie ich weiß, und verwendet log4net mit nunit, ich nie einer config-Datei, müssen Sie nur fügen Sie die folgende Zeile in der test-Klasse Konstruktor
hier ist die vollständige Antwort wenn Sie möchten, um zu sehen, die Probe-test-Klasse
InformationsquelleAutor
Können Sie passen Sie Ihre unit-test zu überprüfen, für die Datei selbst (anstelle der manuellen Inspektion). Beachten Sie den Pfad der Datei in Umgebungsvariablen gespeichert. Dies funktioniert auf TeamCity test-Läufer (keine Notwendigkeit, hart-code-Pfad).
Config:
Code:
InformationsquelleAutor