private JsonVerbose GetTimestamp() { var current = DateTime.UtcNow; JsonVerbose result; var lockTaken = false; _lock.Enter(ref lockTaken); if (current.Ticks - _last.Ticks < 1000) { result = _lastVerbose; } else { result = new JsonVerbose(current.ToString("s")); _last = current; _lastVerbose = result; } if (lockTaken) { _lock.Exit(); } return(result); }
public LogLevelEnricher() { _errorVerbose = new JsonVerbose("ERR"); _debugVerbose = new JsonVerbose("DBG"); _infoVerbose = new JsonVerbose("INF"); _traceVerbose = new JsonVerbose("TRA"); _warningVerbose = new JsonVerbose("WRN"); }
public TimeStampEnricher(string dateTimeFormat) { _dateTimeFormat = dateTimeFormat; _lock = new SpinLock(); _lastVerbose = GetTimestamp(); GetTimestamp(); }
public void Enrich(LogLevel level, Type sender, JsonObject message) { if (!_senders.TryGetValue(sender, out var value)) { value = new JsonVerbose(ReflectionUtils.GetName(sender)); using (Lock.Enter(_lock)) { _senders[sender] = value; } } message.Add(Name, value); }
public void HaveOneVerboseInstance(LogLevel level, Type sender) { var messages = Many(() => new JsonObject()); JsonVerbose instance = null; foreach (var message in messages) { _enricher.Enrich(level, sender, message); if (instance == null) { instance = (JsonVerbose)message[LogLevelEnricher.Name]; } else { instance.Should().Be(message[LogLevelEnricher.Name]); } } }