Я написал промежуточное программное обеспечение, которое я обнаружил ошибки с Serilog. Я хочу записать захваченные ошибки в базу данных. Данные, которые я хочу записать, включают в себя такую информацию, как имя пользователя и имя соответствующего контроллера.
Промежуточное программное обеспечение, которое я написал, выглядит следующим образом:
public static class ApiGlobalExceptionHandlerExtension
{
public static IApplicationBuilder UseWebApiExceptionHandler(this IApplicationBuilder app)
{
var loggerFactory = app.ApplicationServices.GetService(typeof(ILoggerFactory)) as ILoggerFactory;
return app.UseExceptionHandler(HandleApiException(loggerFactory));
}
public static Action<IApplicationBuilder> HandleApiException(ILoggerFactory loggerFactory)
{
return appBuilder =>
{
appBuilder.Run(async context =>
{
var exceptionHandlerFeature = context.Features.Get<IExceptionHandlerFeature>();
if (exceptionHandlerFeature != null)
{
var logger = loggerFactory.CreateLogger("Serilog Global exception logger");
logger.LogError(500, exceptionHandlerFeature.Error, exceptionHandlerFeature.Error.Message);
}
context.Response.StatusCode = 500;
await context.Response.WriteAsync("An unexpected fault happened. Try again later.");
});
};
}
}
Как я уже говорил в SERILOG SQLServer Sink часть, в которой я сделал дополнительные настройки столбцов в настройках приложения, выглядит следующим образом:
"columnOptionsSection": {
"disableTriggers": true,
"clusteredColumnstoreIndex": false,
"primaryKeyColumnName": "Id",
"addStandardColumns": [
"LogEvent"
],
"removeStandardColumns": [
"MessageTemplate",
"Properties"
],
"additionalColumns": [
{
"ColumnName": "EventType",
"DataType": "int",
"AllowNull": false
},
У меня есть способ использовать его при запуске:
public void Configure(IApplicationBuilder app, IHostingEnvironment env,
UserManager<AlpIdentityUser> userManager,
RoleManager<IdentityRole> roleManager,
ILoggerFactory loggerFactory)
{
loggerFactory.AddConsole();
loggerFactory.AddDebug(LogLevel.Information);
}
Как управлять необязательными столбцами I добавить в эту настройку?