public void PropertyNamesAreMaskedWhenDestructuring() { LogEvent evt = null; var log = new LoggerConfiguration() .Destructure.ByMaskingProperties("password", "secret") .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); DestructureMe.StaticProp = 1337; var ignored = new DestructureMe { Id = 2, Name = "Name", Password = "******", Secret = 25673433 }; log.Information("Here is {@Ignored}", ignored); var props = GetPropsFromEvent("Ignored", evt); Assert.AreEqual(2, props[nameof(DestructureMe.Id)].LiteralValue()); Assert.AreEqual("Name", props[nameof(DestructureMe.Name)].LiteralValue()); Assert.AreEqual("******", props[nameof(DestructureMe.Password)].LiteralValue()); Assert.AreEqual("******", props[nameof(DestructureMe.Secret)].LiteralValue()); Assert.AreEqual(1337, props[nameof(DestructureMe.StaticProp)].LiteralValue()); }
public void PropertyNamesInExpressionsAreIgnoredWhenDestructuring() { LogEvent evt = null; Expression <Func <DestructureMe, object> > valueTypeProperty = dm => dm.Id; Expression <Func <DestructureMe, object> > referenceTypeProperty = dm => dm.Password; var log = new LoggerConfiguration() .Destructure.ByIgnoringProperties(valueTypeProperty, referenceTypeProperty) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); var ignored = new DestructureMe { Id = 2, Name = "Name", Password = "******" }; log.Information("Here is {@Ignored}", ignored); var sv = (StructureValue)evt.Properties["Ignored"]; var props = sv.Properties.ToDictionary(p => p.Name, p => p.Value); Assert.IsFalse(props.ContainsKey("Id"), "Id property should have been ignored"); Assert.IsFalse(props.ContainsKey("Password"), "Password property should have been ignored."); Assert.AreEqual("Name", props["Name"].LiteralValue()); }
public void ValuesOfStaticPropertiesAreNotIncluded() { LogEvent evt = null; var log = new LoggerConfiguration() .Destructure.ByMaskingProperties(opts => { opts.ExcludeStaticProperties = true; opts.PropertyNames.AddRange(new[] { "password", "secret" }); }) .WriteTo.Sink(new DelegatingSink(e => evt = e)) .CreateLogger(); DestructureMe.StaticProp = 1337; var ignored = new DestructureMe { Id = 2, Name = "Name", Password = "******", Secret = 25673433 }; log.Information("Here is {@Ignored}", ignored); var props = GetPropsFromEvent("Ignored", evt); Assert.AreEqual(2, props[nameof(DestructureMe.Id)].LiteralValue()); Assert.AreEqual("Name", props[nameof(DestructureMe.Name)].LiteralValue()); Assert.AreEqual("******", props[nameof(DestructureMe.Password)].LiteralValue()); Assert.AreEqual("******", props[nameof(DestructureMe.Secret)].LiteralValue()); Assert.IsFalse(props.ContainsKey(nameof(DestructureMe.StaticProp)), $"{nameof(props)} contains the key {nameof(DestructureMe.StaticProp)}."); }