Во-первых, вам необходимо настроить механизм обработки Global Exception, который будет обрабатывать любое необработанное исключение.
В Net Core, вы можете сделать это, создав ссылку на промежуточное ПО link .
public class ExceptionMiddleware
{
private readonly RequestDelegate _next;
private readonly ILogger<ExceptionMiddleware> _logger;
public ExceptionMiddleware(RequestDelegate next, ILogger<ExceptionMiddleware> logger)
{
_logger = logger;
_next = next;
}
public async Task InvokeAsync(HttpContext httpContext)
{
try
{
await _next(httpContext);
}
catch (Exception ex)
{
_logger.Error(ex);
await HandleExceptionAsync(httpContext, ex);
}
}
private Task HandleExceptionAsync(HttpContext context, Exception exception)
{
context.Response.ContentType = "application/json";
context.Response.StatusCode = (int)HttpStatusCode.InternalServerError;
ApiResponse<object> response = new ApiResponse<object>(exception, EResponseCode.GlobalException, exception.Message, null);
string responseString = JsonConvert.SerializeObject(response);
return context.Response.WriteAsync(responseString);
}
}
Затем зарегистрируйте его в Startup.cs
с помощью app.UseMiddleware<ExceptionMiddleware>();
Создайте цель с именем globalErrors.
<target xsi:type="File" name="globalErrors" fileName="\globalErrors.log"
layout="${longdate}|${event-properties:item=EventId_Id}|${uppercase:${level}}|${logger}|${message} ${exception:format=tostring}" />
Настроить журналы поступает из промежуточного программного обеспечения.
<logger name="*.ExceptionMiddleware" writeTo="globalErrors" />