public TemporaryNLogLogger(string filePath) { _originalNlogConfig = LogManager.Configuration; _originalTimeSource = TimeSource.Current; var fileTarget = new FileTarget(); fileTarget.DeleteOldFileOnStartup = true; fileTarget.FileName = filePath; var config = new LoggingConfiguration(); config.AddTarget("file", fileTarget); config.LoggingRules.Add(new LoggingRule("*", LogLevel.Debug, fileTarget)); LogManager.Configuration = config; TimeSource.Current = new StaticNlogTimeSource(); }
void TestTimeSource(TimeSource source, DateTime expected, DateTimeKind kind) { Assert.IsType(typeof(FastLocalTimeSource), TimeSource.Current); TimeSource.Current = source; Assert.Same(source, TimeSource.Current); var evt = new LogEventInfo(LogLevel.Info, "logger", "msg"); Assert.Equal(kind, evt.TimeStamp.Kind); Assert.True((expected - evt.TimeStamp).Duration() < TimeSpan.FromSeconds(5)); Assert.True((source.Time - source.FromSystemTime(DateTime.UtcNow)).Duration() < TimeSpan.FromSeconds(5)); LogEventInfo evt2; do { evt2 = new LogEventInfo(LogLevel.Info, "logger", "msg"); } while (evt.TimeStamp == evt2.TimeStamp); Assert.Equal(kind, evt2.TimeStamp.Kind); Assert.True(evt2.TimeStamp > evt.TimeStamp); Assert.True(evt2.TimeStamp - evt.TimeStamp <= TimeSpan.FromSeconds(1)); }
void TestTimeSource(TimeSource source, DateTime expected, DateTimeKind kind) { Assert.IsInstanceOfType(typeof(FastLocalTimeSource), TimeSource.Current); TimeSource.Current = source; Assert.AreSame(source, TimeSource.Current); var evt = new LogEventInfo(LogLevel.Info, "logger", "msg"); Assert.AreEqual(kind, evt.TimeStamp.Kind); Assert.IsTrue(expected.AddSeconds(-5) < evt.TimeStamp && evt.TimeStamp < expected.AddSeconds(5)); LogEventInfo evt2; do { evt2 = new LogEventInfo(LogLevel.Info, "logger", "msg"); } while (evt.TimeStamp == evt2.TimeStamp); Assert.AreEqual(kind, evt2.TimeStamp.Kind); Assert.IsTrue(evt2.TimeStamp > evt.TimeStamp); Assert.IsTrue(evt2.TimeStamp - evt.TimeStamp <= TimeSpan.FromSeconds(1)); }