public void TestAddingContextToEachMethod() { TraceParameterProvider.Default.For <IHaveRichContext>() .AddContextData <string>("Site.Id") .AddContextData <string>("Site.Name") .AddContextData <int>("PID"); var proxy = EventSourceImplementer.GetEventSourceAs <IHaveRichContext>(); EnableLogging(proxy); using (var context = TraceContext.Begin()) { context["PID"] = 1234; using (var context2 = TraceContext.Begin()) { context2["Site.Id"] = "Ts1"; context2["Site.Name"] = "TestSite1"; proxy.Log("message"); } } // look at the events var events = Listener.Events.ToArray(); Assert.AreEqual(1, events.Length); Assert.AreEqual(4, events[0].Payload.Count); Assert.AreEqual("message", events[0].Payload[0]); Assert.AreEqual("Ts1", events[0].Payload[1]); Assert.AreEqual("TestSite1", events[0].Payload[2]); Assert.AreEqual(1234, events[0].Payload[3]); }
public async Task <IDistributedLock> CreateLockAsync(string name, TimeSpan expiry, TimeSpan wait, TimeSpan retry, CancellationToken cancellationToken, Action expirationAction = null) { IDistributedLock result = null; PeriodicAction timer = null; timer = new PeriodicAction(async ct => { var dlock = await TryAquireLock(name, expiry, expirationAction); if (dlock != null) { result = dlock; timer?.Stop(); } }, Convert.ToInt32(retry.TotalMilliseconds), wait); cancellationToken.Register(() => timer.Stop()); using (var scope = TraceContext.Begin()) { _logger.TraceVerboseEvent($"Starting trying to acquire lock {name} for {wait} each {retry}"); await timer.Start(); return(result ?? new EfDistributedLock(name)); } }