static void Main(string[] args) { var logger = new LoggerConfiguration() .Enrich.WithSensitiveDataMasking() .WriteTo.Console() .CreateLogger(); logger.Information("Hello, world"); using (logger.EnterSensitiveArea()) { // An e-mail address in text logger.Information("This is a secret email address: [email protected]"); // Works for properties too logger.Information("This is a secret email address: {Email}", "*****@*****.**"); // IBANs are also masked logger.Information("Bank transfer from Felix Leiter on NL02ABNA0123456789"); // IBANs are also masked logger.Information("Bank transfer from Felix Leiter on {BankAccount}", "NL02ABNA0123456789"); } // But outside the sensitive area nothing is masked logger.Information("Felix can be reached at [email protected]"); Console.ReadLine(); }
static async Task Main(string[] args) { var logger = new LoggerConfiguration() .Enrich.WithSensitiveDataMasking(MaskingMode.InArea, new IMaskingOperator[] { new EmailAddressMaskingOperator(), new IbanMaskingOperator(), new CreditCardMaskingOperator(false) }) .WriteTo.Console() .CreateLogger(); logger.Information("Hello, world"); using (logger.EnterSensitiveArea()) { // An e-mail address in text logger.Information("This is a secret email address: [email protected]"); // Works for properties too logger.Information("This is a secret email address: {Email}", "*****@*****.**"); // IBANs are also masked logger.Information("Bank transfer from Felix Leiter on NL02ABNA0123456789"); // IBANs are also masked logger.Information("Bank transfer from Felix Leiter on {BankAccount}", "NL02ABNA0123456789"); // Credit card numbers too logger.Information("Credit Card Number: 4111111111111111"); // even works in an embedded XML string var x = new { Key = 12345, XmlValue = "<MyElement><CreditCard>4111111111111111</CreditCard></MyElement>" }; logger.Information("Object dump with embedded credit card: {x}", x); } // But outside the sensitive area nothing is masked logger.Information("Felix can be reached at [email protected]"); // Now, show that this works for async contexts too logger.Information("Now, show the Async works"); var t1 = LogAsSensitiveAsync(logger); var t2 = LogAsUnsensitiveAsync(logger); await Task.WhenAll(t1, t2).ConfigureAwait(false); Console.ReadLine(); }