Introduction
For an application, logging is very important to keep track of that application and keep it error-free. In .NET Core, we don't need any third party logging; instead, we can use built-in logging whenever we want. This is very efficient in terms of code and performance.
Let’s start.
Create a new .NET Core application and name it.
Step 1: Go to Package mManager View-->Other Windows--> Package manager Console -->
Install-Package Microsoft.Extensions.Logging
Add Logging
Once the extension's installed, we can add logging by adding ILogger<T> (custom logging) or ILoggerFactory. If we want to use ILoggerFactory, then we must create it using CreateLogger, to use logging add logging services under ConfigureServices. Moreover, we can use built-in logging with the other loggings (like Nlog) with very minimal code.
Startup.cs
- public class Startup
- {
- public Startup(IHostingEnvironment env)
- {
- var builder = new ConfigurationBuilder()
- .SetBasePath(env.ContentRootPath)
- .AddJsonFile("appsettings.json", optional: true, reloadOnChange: true)
- .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
- .AddEnvironmentVariables();
- Configuration = builder.Build();
- }
-
- public IConfigurationRoot Configuration { get; }
-
-
- public void ConfigureServices(IServiceCollection services)
- {
-
- services.AddMvc();
- services.AddLogging();
- }
-
-
- public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory)
- {
- loggerFactory.AddConsole(Configuration.GetSection("Logging"));
- loggerFactory.AddDebug();
-
- if (env.IsDevelopment())
- {
- app.UseDeveloperExceptionPage();
- app.UseBrowserLink();
- }
- else
- {
- app.UseExceptionHandler("/Home/Error");
- }
-
- app.UseStaticFiles();
-
- app.UseMvc(routes =>
- {
- routes.MapRoute(
- name: "default",
- template: "{controller=Home}/{action=Index}/{id?}");
- });
- }
- }
ILoggerFactory: We can use ILoggerFactory. For this, we must use CreateLogger.
- _logger = Mylogger.CreateLogger(typeof(HomeController));
HomeController.cs
- public class HomeController : Controller
- {
- private ILogger _logger;
-
- public HomeController(ILoggerFactory Mylogger)
- {
- _logger = Mylogger.CreateLogger(typeof(HomeController));
- }
-
- public IActionResult Index()
- {
- return View();
- }
-
- public IActionResult About()
- {
- try
- {
- ViewData["Message"] = "Your application description page.";
- _logger.LogInformation("About Page has been Accessed");
- return View();
- }
- catch (System.Exception ex)
- {
- _logger.LogError("About: " + ex.Message);
- throw;
- }
- }
-
- public IActionResult Contact()
- {
- try
- {
- ViewData["Message"] = "Your contact page.";
- _logger.LogInformation("Contact Page has been Accessed");
- return View();
- }
- catch (System.Exception ex)
- {
- _logger.LogError("Contact: " + ex.Message);
- throw;
- }
- }
-
- public IActionResult Error()
- {
- return View();
- }
- }
Run and Test
LogLevel: We can add logging level by adding the level we want in
appsettings.json.
- Trace
- Debug
- Information
- Warning
- Error
- Application failure or crashes
Summary
We can use built-in logging frameworks and separate our application from logger implementation so that we can use the same framework later for other logging providers.