From ef758b544325a2694c9b2aff3e0b8240bcb810d2 Mon Sep 17 00:00:00 2001 From: musademir Date: Thu, 9 May 2019 20:04:08 +0300 Subject: [PATCH] AuditingStore optional HideErrors added --- .../Volo/Abp/Auditing/AbpAuditingOptions.cs | 9 +++++- .../Volo/Abp/AuditLogging/AuditingStore.cs | 28 ++++++++++++++----- 2 files changed, 29 insertions(+), 8 deletions(-) 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) {