Logging configuration in .NET core

access_time 4 years ago visibility7943 comment 0

.NET core introduces a logging API that works with a number of logging frameworks. The built-in providers are configurable and extensible to support different level loggings.

Built-in Logging Providers

Microsoft provides a number of built-in providers.  There are two logging providers created in the project templates: Console and Debug.

Console writes logs to the console while Debug uses System.Diagnostics.Debug to write logs.

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory, IDatabaseInitializer dbInitializer)
        {
            loggerFactory.AddConsole(Configuration.GetSection("Logging"));
            loggerFactory.AddDebug();

//…

}

There are also other built-in providers like EventSource, EventLog, Azure App Service and TraceSource.

Logging Configurations

In the above example, it specifies Logging section in configuration file is configured for Console logging provider.

"Logging": {
     "IncludeScopes": false,
     "LogLevel": {
       "Default": "Warning"
     }
   }

About Scope

IncludeScopes indicates whether logging scope is supported.

Scope can be used to group a number of logical operations to attach the same data to each log created within that scope.

For more details, please refer to:

https://docs.microsoft.com/en-us/aspnet/core/fundamentals/logging?tabs=aspnetcore2x#log-scopes

LogLevel

Different levels of logging are supported. As described in the following code, the most detailed level is Trace. In the configuration sample ‘"Default": "Warning"’, default logging level is Warning, which means only Warning, Error and Critical messages will be logged in Console.

namespace Microsoft.Extensions.Logging
{
     //
     // Summary:
     //     Defines logging severity levels.
     public enum LogLevel
     {
         //
         // Summary:
         //     Logs that contain the most detailed messages. These messages may contain sensitive
         //     application data. These messages are disabled by default and should never be
         //     enabled in a production environment.
         Trace = 0,
         //
         // Summary:
         //     Logs that are used for interactive investigation during development. These logs
         //     should primarily contain information useful for debugging and have no long-term
         //     value.
         Debug = 1,
         //
         // Summary:
         //     Logs that track the general flow of the application. These logs should have long-term
         //     value.
         Information = 2,
         //
         // Summary:
         //     Logs that highlight an abnormal or unexpected event in the application flow,
         //     but do not otherwise cause the application execution to stop.
         Warning = 3,
         //
         // Summary:
         //     Logs that highlight when the current flow of execution is stopped due to a failure.
         //     These should indicate a failure in the current activity, not an application-wide
         //     failure.
         Error = 4,
         //
         // Summary:
         //     Logs that describe an unrecoverable application or system crash, or a catastrophic
         //     failure that requires immediate attention.
         Critical = 5,
         //
         // Summary:
         //     Not used for writing log messages. Specifies that a logging category should not
         //     write any messages.
         None = 6
     }
}

Another Example

{
     "Logging": {
         "LogLevel": {
             "MyController": "Error",

            "MyNamespace": "Debug",
             "Default": "Information",
             "Microsoft": "Warning"       
         }
     }
}

In this example above, the log levels are:

  1. Controller MyController: Error
  2. All the categories that begin with MyNamespace: Debug
  3. Default log level is Information (will be used when no filters match)
  4. Microsoft: only Warning messages will be logged.

Configure using Code

You can also use code in your Startup class to configure loggings and filters.

services.AddLogging(options =>
             {
                 options.AddFilter("Microsoft", LogLevel.Critical);
             });

info Last modified by Administrator 4 months ago copyright This page is subject to Site terms.
Like this article?
Share on

Please log in or register to comment.

account_circle Log in person_add Register

Log in with external accounts

Follow Kontext

Get our latest updates on LinkedIn or Twitter.

Want to publish your article on Kontext?

Learn more

More from Kontext

visibility 10773
thumb_up 0
access_time 4 years ago

In ASP.NET Core, we can easily use user secrets to manage our password or credentials. This post will summarize the approaches we can use after the websites are deployed into Azure.

visibility 3037
thumb_up 0
access_time 4 years ago

Sending emails are common in applications. For example, when user registers, we need to send account activation emails. This post summarize the approaches we can use to send emails in .NET Core 1.x and 2.x.

visibility 2308
thumb_up 0
access_time 4 years ago

When upgrading Bootstrap to v4.0.0 release, the bundler and minifier doesn’t work properly due to CSS variable is commonly used: :root{--blue:#007bff; About 26 errors will show up in the Error List with the following message: Expected semicolon or closing curly-brace found '-' The ...