Serilog di in asp net core which ilogger interface to inject

ASP.NET is a popular programming language used for developing web applications. One common requirement in web development is logging, helps in tracking and troubleshooting issues in the application. In this article, we will explore how to use Serilog in ASP.NET Core and inject the ILogger .

What is Serilog?

Serilog is a flexible and powerful logging for .NET applications. It provides a simple and intuitive API for logging messages with various levels of severity. Serilog supports structured logging, which allows developers to log events with additional properties and context information.

Logging in ASP.NET Core

ASP.NET Core provides built-in support for logging through the Microsoft.Extensions.Logging namespace. This logging framework allows developers to log messages using different , such as Console, , EventLog, and more. It also supports injection, it easy to inject the ILogger interface into classes that require logging capabilities.

Using Serilog in ASP.NET Core

To use Serilog in an ASP.NET Core application, we need to add the Serilog.AspNetCore NuGet package to our project. This package provides the necessary extensions and configuration options for integrating Serilog with ASP.NET Core.

First, let's add the Serilog.AspNetCore package to our project. Open the Package Manager Console and run the following command:

Install-Package Serilog.AspNetCore

Once the package is installed, we need to configure Serilog in the Startup.cs file. Open the file and locate the ConfigureServices method. Add the following code inside the method:

public void ConfigureServices(IServiceCollection services)
    // Other service 

    // Configure Serilog
    Log.Logger = new LoggerConfiguration()

    services.AddLogging(loggingBuilder =>

    // Other service configurations

In the above code, we configure Serilog to write log messages to the console. You can customize the logging behavior by adding additional sinks, such as a file or a database.

Injecting ILogger Interface

Now that we have configured Serilog, we can inject the ILogger interface into our classes to enable logging. The ILogger interface provides for logging messages with different severity levels, such as Information, Warning, Error, and Critical.

Let's say we have a HomeController class that requires logging capabilities. We can inject the ILogger interface into the constructor of the class as follows:

public class HomeController : Controller
    private readonly ILogger _logger;

    public HomeController(ILogger logger)
        _logger = logger;

    // Other action methods

In the above code, we inject the ILogger interface into the constructor of the HomeController class. This allows us to use the _logger instance to log messages within the class.

Logging Examples

Now that we have the ILogger interface injected, we can use it to log messages in our application. Here are a few examples:

_logger.LogInformation("This is an information message.");
_logger.LogWarning("This is a warning message.");
_logger.LogError("This is an error message.");
_logger.LogCritical("This is a critical message.");

In the above examples, we use different severity levels to log messages. The messages will be processed by Serilog and written to the configured sink, which in this case is the console.


In this article, we explored how to use Serilog in ASP.NET Core and inject the ILogger interface for logging purposes. We learned the benefits of using Serilog for structured logging and saw examples of how to log messages with different severity levels. By leveraging Serilog and the ILogger interface, developers can easily implement logging capabilities in their ASP.NET Core applications.

Rate this post

Leave a Reply

Your email address will not be published. Required fields are marked *

Table of Contents