Skip to content

Musings of a Strange Loop Posts

Logging in .NET Core Console Applications

(Updated after David correctly pointed out that I was missing the Microsoft.Extensions.Logging.Console package. Sorry for all of you who wasted time trying to get this to run without this 🙏)

Logging should be simple. It should come out of the box in any programming language + framework. I’ve seen too many developers use Console.WriteLine(...) as a way to log in their code because for some reason, wiring logging frameworks is complicated (at least feels complicated). So after reading a lot of documentation and blogs, I decided to share what I learned. This will at least help my future self in a couple of years :-).

Let’s get started by creating a new console app:

> mkdir DotNetCoreConsoleAppLogging
> cd .\DotNetCoreConsoleAppLogging\
> dotnet new console
> dotnet add package Microsoft.Extensions.Logging.Console

For the simplest case, we create a logger by using a LoggerFactory to get a Logger instance, and write to the log which is directed to the console:

using Microsoft.Extensions.Logging;
 
public class Program
{
  public static void Main(string[] args)
  {
    using var loggerFactory = LoggerFactory.Create(builder =>
      {
        builder.AddConsole();
      });
    var logger = loggerFactory.CreateLogger<Program>();
    logger.LogInformation("Hello World!");
  }
}

Running the app prints the log entry to the console:

> dotnet run
info: Program[0]
Hello!

Yes. It’s that simple.