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 616190af64..da406fa490 100644
--- a/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs
+++ b/framework/src/Volo.Abp.Auditing/Volo/Abp/Auditing/AbpAuditingOptions.cs
@@ -9,6 +9,12 @@ namespace Volo.Abp.Auditing
{
//TODO: Consider to add an option to disable auditing for application service methods?
+ ///
+ /// If this value is true, auditing will not throw an exceptions and it will log it when an error occurred while saving AuditLog.
+ /// Default: true.
+ ///
+ public bool HideErrors { get; set; }
+
///
/// Default: true.
///
@@ -36,11 +42,12 @@ namespace Volo.Abp.Auditing
/// Default: false.
///
public bool IsEnabledForGetRequests { get; set; }
-
+
public AbpAuditingOptions()
{
IsEnabled = true;
IsEnabledForAnonymousUsers = true;
+ HideErrors = true;
Contributors = new List();
diff --git a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditingStore.cs b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditingStore.cs
index 59f3ae5431..ecb07300f0 100644
--- a/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditingStore.cs
+++ b/modules/audit-logging/src/Volo.Abp.AuditLogging.Domain/Volo/Abp/AuditLogging/AuditingStore.cs
@@ -2,6 +2,7 @@
using System.Threading.Tasks;
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Logging.Abstractions;
+using Microsoft.Extensions.Options;
using Volo.Abp.Auditing;
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
@@ -16,29 +17,42 @@ namespace Volo.Abp.AuditLogging
private readonly IAuditLogRepository _auditLogRepository;
private readonly IGuidGenerator _guidGenerator;
private readonly IUnitOfWorkManager _unitOfWorkManager;
+ private readonly AbpAuditingOptions Options;
public AuditingStore(
IAuditLogRepository auditLogRepository,
IGuidGenerator guidGenerator,
- IUnitOfWorkManager unitOfWorkManager)
+ IUnitOfWorkManager unitOfWorkManager,
+ IOptions options)
{
_auditLogRepository = auditLogRepository;
_guidGenerator = guidGenerator;
_unitOfWorkManager = unitOfWorkManager;
+ Options = options.Value;
Logger = NullLogger.Instance;
}
+ private async Task SaveLogAsync(AuditLogInfo auditInfo)
+ {
+ using (var uow = _unitOfWorkManager.Begin(requiresNew: true))
+ {
+ var auditLog = new AuditLog(_guidGenerator, auditInfo);
+ await _auditLogRepository.InsertAsync(auditLog);
+ await uow.SaveChangesAsync();
+ }
+ }
public async Task SaveAsync(AuditLogInfo auditInfo)
{
+ if (!Options.HideErrors)
+ {
+ await SaveLogAsync(auditInfo);
+ return;
+ }
+
try
{
- using (var uow = _unitOfWorkManager.Begin(requiresNew: true))
- {
- var auditLog = new AuditLog(_guidGenerator, auditInfo);
- await _auditLogRepository.InsertAsync(auditLog);
- await uow.SaveChangesAsync();
- }
+ await SaveLogAsync(auditInfo);
}
catch (Exception ex)
{