Skip to main content

ASP.NET Core - Log exceptions to the IIS log


This is only applicable when you are NOT using MVC in your application


1. Required Packages : 

  • Microsoft.Extensions.Logging
  • Microsoft.Extensions.Logging.Console


2. Middleware for Exception Login : 

public class ExceptionLoggingMiddleware  
 {  
   private readonly RequestDelegate _next;  
   private readonly ILogger<ExceptionLoggingMiddleware> _logger;  
   public ExceptionLoggingMiddleware(RequestDelegate next, ILogger<ExceptionLoggingMiddleware> logger)  
   {  
     _next = next;  
     _logger = logger;  
   }  
   public async Task InvokeAsync(HttpContext context)  
   {  
     try  
     {  
       await _next(context);  
     }  
     catch (Exception ex)  
     {  
       _logger.LogError(ex, "An unhandled exception occurred.");  
       throw; // Rethrow the exception after logging it  
     }  
   }  
 }  


3. Configure your Program.cs

 using Microsoft.AspNetCore.Builder;  
 using Microsoft.AspNetCore.Hosting;  
 using Microsoft.Extensions.DependencyInjection;  
 using Microsoft.Extensions.Hosting;  
 using Microsoft.Extensions.Logging;  
 var builder = WebApplication.CreateBuilder(args);  
 // Configure logging  
 builder.Logging.ClearProviders();  
 builder.Logging.AddConsole();  
 builder.Logging.AddFile("Logs/app-{Date}.log");   
 var app = builder.Build();  
 // Add custom middleware for exception logging  
 app.UseMiddleware<ExceptionLoggingMiddleware>();  
 // Define endpoints  
 app.MapGet("/", () => "Hello World!");  
 app.Run();  
 public class ExceptionLoggingMiddleware  
 {  
   private readonly RequestDelegate _next;  
   private readonly ILogger<ExceptionLoggingMiddleware> _logger;  
   public ExceptionLoggingMiddleware(RequestDelegate next, ILogger<ExceptionLoggingMiddleware> logger)  
   {  
     _next = next;  
     _logger = logger;  
   }  
   public async Task InvokeAsync(HttpContext context)  
   {  
     try  
     {  
       await _next(context);  
     }  
     catch (Exception ex)  
     {  
       _logger.LogError(ex, "An unhandled exception occurred.");  
       throw; // Rethrow the exception after logging it  
     }  
   }  
 }  


4.  Set Up File Permissions for IIS

  • Create a Logs directory in your application root
  • Right-click the Logs folder in Windows Explorer.
  • Go to Properties.
  • Navigate to the Security tab.
  • Click Edit, then Add, and enter IIS_IUSRS.
  • Grant Write permissions to the IIS_IUSRS user.

Comments

Popular posts from this blog

Before ZBoot your ServiceNow instance

Things to Remember When you take the decision to ZBoot your ServiceNow instance. If you are using a highly customized ServiceNow environment that gives you a hard time being aligned with the latest trends, you might consider resetting your environment. ZBoot is the name given by ServiceNow for this operation. ZBoot simply factory resets your ServiceNow environment and brings it back to its original state. This sounds simple but is associated with numerous hard business decisions. ZBoot simply erases your existing data and changes the table structures to a different level. So Having your old business data in your newly built environment will be challenging and sometimes it's impossible.  So make sure you have a proper plan for the data before you make the decision of a ZBoot. Changing your usual business work environment requires proper user training. ZBoot results in drastic changes to the current work environment (Depending on the customizations you had).  So, make sure you h...

iPaaS - Tools

  What is iPaaS ? An integration Platform as a Service is a set of automated tools (Middleware) that are deployed in different environments under different conditions. their tools are used in large-scale B2B (Business to Business) enterprises to integrate their on-prem applications with cloud services.  Usually, most of the PaaS providers provide you with a server, middleware and data infrastructures, and other tools which help you to expose your on-prem apps as cloud-accessible services. Common features ESB (Enterprise service Bus) Data Mapping Data/information routing and filtering Orchestration Protocol and format bridging ETL (Extract, transfer, Load) - users for data science and related services Top-ranking iPaaS tools Dell Boomi URL: https://boomi.com/ Review: https://reviews.financesonline.com/p/dell-boomi/#user-review community: https://community.boomi.com/s/ IBM AppConnect URL: https://www.ibm.com/cloud/app-connect Review: NA community: https://community.ibm.com/commu...

ServiceNow, ITIL and Agile - A different symphony

As a 9+ experienced Solution Architect who is mainly focusing on software system automation in ITSM Domain, I had the invaluable opportunity of being a part of a few successful business transitioning projects. With that experience on hand, I'm writing this article to share the challenges you can expect during this kind of transition. Agile Since we are in a rapidly changing business world which directly depends on IT, IT organizations play major roles in every business. Bigger the company, the responsibility of the IT company getting bigger and bigger day by day. Things get much more complicated when an IT organization supports IT businesses like Software development firms or Infrastructure services providers. Therefore a better process of managing delivery activities is required for such an IT company.  Many years ago, When Agile invaded the tech market, businesses eagerly looked forward to restructuring their IT organizations according to those practices.  Agile is a pr...