Links

Logging extensions

Abstractions module provides a wide set of extensions that take care of constructing log events.
These extensions can be grouped in two ways:
  • By level and name: Debug, Info, Warn, Error, Fatal.
  • By parameters:
    • string:
      • Produces an event with given message template and no properties.
      • log.Info("Hello, world!");
    • string + T:
      • Produces an event with given message template and properties of given object.
      • log.Info("Hello, {Who}!", new { Who = "world" });
    • string + object[]:
      • Produces an event with given message template and given property values (names are inferred from message template).
      • log.Info("Hello, {Who}!", "world");
    • Exception:
      • Produces an event with given exception and no message or properties.
      • log.Error(new Exception());
    • Exception + string:
      • Produces an event with given exception and message template.
      • log.Error(new Exception(), "I have failed.");
    • Exception + string + T:
      • Produces an event with given exception, message template and properties of given object.
      • log.Error(new Exception(), "{Who} have/has failed.", new { Who = "I" });
    • Exception + string + object[]:
      • Produces an event with given exception, message template and given property values (names are inferred from message template).
      • log.Error(new Exception(), "{Who} have/has failed.", "He");
    • interpolated string:
      • Produces an event with given message template and given property values (names are extracted from argument names).
      • Requires C# 10.
      • var Who = "world";
        log.Info($"Hello, {Who}!");
    • Exception + interpolated string:
      • Produces an event with given exception, message template and given property values (names are extracted from argument names).
      • Requires C# 10.
      • var Who = "world";
        log.Info(new Exception(), $"Hello, {Who}!");
See the section about providing property values to extensions to get a grasp of how to provide values for placeholders in message template.
All extensions produce events with timestamp set to current time and level corresponding to method name.