diff --git a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
index f2929e3f5a..cc71797a5b 100644
--- a/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
+++ b/framework/src/Volo.Abp.AspNetCore/Volo/Abp/AspNetCore/Auditing/AbpAuditingMiddleware.cs
@@ -33,6 +33,23 @@ namespace Volo.Abp.AspNetCore.Auditing
await next(context).ConfigureAwait(false);
return;
}
+ if (Options.AlwaysLogOnException)
+ {
+ using (var scope = _auditingManager.BeginScope())
+ {
+ try
+ {
+ await next(context).ConfigureAwait(false);
+ return;
+ }
+ catch (Exception)
+ {
+ await scope.SaveAsync().ConfigureAwait(false);
+ if (!Options.HideErrors)
+ throw;
+ }
+ }
+ }
using (var scope = _auditingManager.BeginScope())
{
@@ -40,9 +57,8 @@ namespace Volo.Abp.AspNetCore.Auditing
{
await next(context).ConfigureAwait(false);
}
- catch (Exception ex)
+ catch (Exception)
{
- scope.AddException(ex);
}
finally
{
@@ -53,13 +69,6 @@ namespace Volo.Abp.AspNetCore.Auditing
private bool ShouldWriteAuditLog(HttpContext httpContext)
{
- // IF selected, save audit logs on exception on GET requests even if audit log is disabled for GET requests.
- if (Options.AlwaysLogOnException &&
- string.Equals(httpContext.Request.Method, HttpMethods.Get, StringComparison.OrdinalIgnoreCase))
- {
- return true;
- }
-
if (!Options.IsEnabled)
{
return false;
diff --git a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs
index 5dcae1e097..db13bdaf74 100644
--- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs
+++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs
@@ -29,11 +29,11 @@ namespace Volo.Abp.Auditing
///
/// Default: true.
///
- public bool IsEnabledForAnonymousUsers { get; set; } = false;
+ public bool IsEnabledForAnonymousUsers { get; set; }
///
- /// Audit log e xceptions.
- /// Default: false.
+ /// Audit log on exceptions.
+ /// Default: true.
///
public bool AlwaysLogOnException { get; set; }
@@ -54,6 +54,7 @@ namespace Volo.Abp.Auditing
IsEnabled = true;
IsEnabledForAnonymousUsers = true;
HideErrors = true;
+ AlwaysLogOnException = true;
Contributors = new List();
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs
index 97b211ba5a..b65f8eef1f 100644
--- a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/Auditing/AuditTestController_Tests.cs
@@ -39,7 +39,7 @@ namespace Volo.Abp.AspNetCore.Mvc.Auditing
public async Task Should_Trigger_Middleware_And_AuditLog_Exception_Always()
{
_options.IsEnabled = false;
- _options.AlwaysLogOnException = true;
+ _options.AlwaysLogOnException = false;
await GetResponseAsync("api/audit-test/audit-fail", System.Net.HttpStatusCode.BadRequest);
//await _auditingStore.Received().SaveAsync(Arg.Any()); //Won't work, save happens out of scope
}