By using this site, you acknowledge that you have read and understand our Cookie policy, Privacy policy and Terms .
close

Everything about .NET framework.

rss_feed Subscribe RSS
access_time 3 years ago visibility4462 comment 0 languageEnglish

.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 Raymond at 3 years ago * This page is subject to Site terms.

info About author

More from Kontext

local_offer .net core local_offer lite-log

visibility 1800
thumb_up 0
access_time 2 years ago

After upgrading to ASP.NET Core 2.1 (.NET Core SDK 2.1.301), you may encounter the following error about encoding: System.ArgumentException    HResult=0x80070057    Message='Cyrillic' is not a supported encoding name. For information on defining a cus...

open_in_new View

local_offer .net core local_offer entity-framework

visibility 14937
thumb_up 0
access_time 2 years ago

SQLite is a self-contained and embedded SQL database engine. In .NET Core, Entity Framework Core provides APIs to work with SQLite. This page provides sample code to create a SQLite database using package Microsoft.EntityFrameworkCore.Sqlite . Create sample project ...

open_in_new View

local_offer asp.net core 2 local_offer .net core

visibility 1697
thumb_up 0
access_time 2 years ago

In .NET Core 2.x, Windows Forms or WPF are not implemented since they are based on GDI+ and DirectX respectively in Windows. In .NET Core 3.0, there is plan to add Desktop Packs which includes UWP. WPF and Windows Forms. However, they will still be Windows-only. In .NET Core applications, you may...

open_in_new View

local_offer .net core

visibility 2343
thumb_up 0
access_time 3 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.

open_in_new View

Kontext Column

Kontext Column

Created for everyone to publish data, programming and cloud related articles. Follow three steps to create your columns.

Learn more arrow_forward
info Follow us on Twitter to get the latest article updates. Follow us