Merge pull request #3138 from mark-monteiro/reduce-development-exception-page-logging

Reduce Excessive Logging From DeveloperExceptionPageMiddleware
This commit is contained in:
Bond-009 2020-05-18 17:21:45 +02:00 committed by GitHub
commit e14c85555c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -210,16 +210,8 @@ namespace Emby.Server.Implementations.HttpServer
} }
} }
private async Task ErrorHandler(Exception ex, IRequest httpReq, int statusCode, string urlToLog) private async Task ErrorHandler(Exception ex, IRequest httpReq, int statusCode, string urlToLog, bool ignoreStackTrace)
{ {
bool ignoreStackTrace =
ex is SocketException
|| ex is IOException
|| ex is OperationCanceledException
|| ex is SecurityException
|| ex is AuthenticationException
|| ex is FileNotFoundException;
if (ignoreStackTrace) if (ignoreStackTrace)
{ {
_logger.LogError("Error processing request: {Message}. URL: {Url}", ex.Message.TrimEnd('.'), urlToLog); _logger.LogError("Error processing request: {Message}. URL: {Url}", ex.Message.TrimEnd('.'), urlToLog);
@ -504,15 +496,24 @@ namespace Emby.Server.Implementations.HttpServer
{ {
var requestInnerEx = GetActualException(requestEx); var requestInnerEx = GetActualException(requestEx);
var statusCode = GetStatusCode(requestInnerEx); var statusCode = GetStatusCode(requestInnerEx);
bool ignoreStackTrace =
requestInnerEx is SocketException
|| requestInnerEx is IOException
|| requestInnerEx is OperationCanceledException
|| requestInnerEx is SecurityException
|| requestInnerEx is AuthenticationException
|| requestInnerEx is FileNotFoundException;
// Do not handle 500 server exceptions manually when in development mode // Do not handle 500 server exceptions manually when in development mode.
// The framework-defined development exception page will be returned instead // Instead, re-throw the exception so it can be handled by the DeveloperExceptionPageMiddleware.
if (statusCode == 500 && _hostEnvironment.IsDevelopment()) // However, do not use the DeveloperExceptionPageMiddleware when the stack trace should be ignored,
// because it will log the stack trace when it handles the exception.
if (statusCode == 500 && !ignoreStackTrace && _hostEnvironment.IsDevelopment())
{ {
throw; throw;
} }
await ErrorHandler(requestInnerEx, httpReq, statusCode, urlToLog).ConfigureAwait(false); await ErrorHandler(requestInnerEx, httpReq, statusCode, urlToLog, ignoreStackTrace).ConfigureAwait(false);
} }
catch (Exception handlerException) catch (Exception handlerException)
{ {