Blame view

Yi.Abp.Net8/module/audit-logging/Yi.Framework.AuditLogging.Domain/AuditingStore.cs 1.97 KB
515fceeb   “wangming”   框架初始化
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  using Microsoft.Extensions.Logging;
  using Microsoft.Extensions.Logging.Abstractions;
  using Microsoft.Extensions.Options;
  using Volo.Abp.Auditing;
  using Volo.Abp.DependencyInjection;
  using Volo.Abp.Uow;
  using Yi.Framework.AuditLogging.Domain.Repositories;
  using Yi.Framework.Core.Helper;
  
  namespace Yi.Framework.AuditLogging.Domain;
  
  public class AuditingStore : IAuditingStore, ITransientDependency
  {
      public ILogger<AuditingStore> Logger { get; set; }
      protected IAuditLogRepository AuditLogRepository { get; }
      protected IUnitOfWorkManager UnitOfWorkManager { get; }
      protected AbpAuditingOptions Options { get; }
      protected IAuditLogInfoToAuditLogConverter Converter { get; }
  
      public AuditingStore(
          IAuditLogRepository auditLogRepository,
          IUnitOfWorkManager unitOfWorkManager,
          IOptions<AbpAuditingOptions> options,
          IAuditLogInfoToAuditLogConverter converter)
      {
          AuditLogRepository = auditLogRepository;
          UnitOfWorkManager = unitOfWorkManager;
          Converter = converter;
          Options = options.Value;
  
          Logger = NullLogger<AuditingStore>.Instance;
      }
  
      public virtual async Task SaveAsync(AuditLogInfo auditInfo)
      {
          if (!Options.HideErrors)
          {
              await SaveLogAsync(auditInfo);
              return;
          }
  
          try
          {
              await SaveLogAsync(auditInfo);
          }
          catch (Exception ex)
          {
              Logger.LogWarning("Could not save the audit log object: " + Environment.NewLine + auditInfo.ToString());
              Logger.LogException(ex, LogLevel.Error);
          }
      }
  
      protected virtual async Task SaveLogAsync(AuditLogInfo auditInfo)
      {
          Logger.LogDebug("Yi-请求追踪:" + JsonHelper.ObjToStr(auditInfo, "yyyy-MM-dd HH:mm:ss"));
          using (var uow = UnitOfWorkManager.Begin())
          {
              await AuditLogRepository.InsertAsync(await Converter.ConvertAsync(auditInfo));
              await uow.CompleteAsync();
          }
      }
  }