ASP.NET Core logs through the built-in ILogger API. You inject ILogger<T> into a class, and the type's name becomes the log category, which helps you filter and search the logs.
public class HomeController : Controller
{
private readonly ILogger<HomeController> _logger;
public HomeController(ILogger<HomeController> logger)
{
_logger = logger;
}
public IActionResult Index()
{
_logger.LogInformation("Index page requested");
return View();
}
}
Each message goes to every configured logging provider. WebApplication.CreateBuilder adds the Console, Debug and EventSource providers, plus EventLog on Windows. Third-party frameworks such as Serilog or NLog plug in as providers too.
Write messages as templates with named placeholders, such as "Getting item {Id}", rather than building the string yourself. Providers then store the values as fields, which is structured logging.
Minimum levels per category go in the Logging section of appsettings.json, and the default level is Information.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓