Ich verwende vs 2017, schreibe eine netcoreapp2.0-Bibliothek, und testet es mit einem UnitTest-Projekt (XUnit und NUnit geben die gleichen Ergebnisse).
Ich habe festgestellt, dass, wenn ich zwangsweise meine Serilog Logger entsorgen, nur die erste Zeile endet in Seq.Nur erste Logging-Shows, außer mit Zwang
Hier sind meine 2 Klassen. Die Bibliothek ein:
public class Class1
{
public static Logger _log;
public Class1(Logger log)
{
_log = log;
_log.Verbose("Class 1 constructor fineshed");
}
public void LogMessage(string s)
{
_log.Debug("Got message: {Message}", s);
}
}
Und der Unit-Test:
public class UnitTest1
{
public static Logger _log = new LoggerConfiguration()
.WriteTo.Seq("http://localhost:5341", Serilog.Events.LogEventLevel.Verbose)
.MinimumLevel.Verbose()
.CreateLogger();
[Fact]
public void Test1()
{
_log.Debug("Test 1 logging");
var c = new Class1(_log);
c.LogMessage("Logging from test");
_log.Information("Test fineshed");
_log.Dispose(); // Without this, only "Test 1 logging" is logged.
}
}
referenzierten Assemblys (von Unit-Test-Projekt):
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.3.0-preview-20170628-02" />
<PackageReference Include="serilog" Version="2.5.0" />
<PackageReference Include="serilog.sinks.seq" Version="3.3.3" />
<PackageReference Include="xunit" Version="2.2.0" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.2.0" />
Irgendwelche Vorschläge?
(hier ist ein Link zu einem Demo-Projekt, offen mit vs 2017 die Pakete wieder her und führen Sie den Test: demo project)
Auf der Variablen können Sie einfach 'Dispose()' aufrufen - das ist im Wesentlichen dasselbe wie 'CloseAndFlush()'. HTH! –
@NicholasBlumhardt Es tut es sicherlich. Prost Kumpel. Derzeit läuft der statische Logger für dieses Unit-Test-Projekt gut, so wie ich es gemacht habe, aber es ist gut zu wissen, dass es mit einer Variablen auf eine sehr ähnliche Weise gemacht werden kann. – Noctis