From b45be241c9bb3f156a88e53140b8f649def19cec Mon Sep 17 00:00:00 2001 From: colin Date: Tue, 3 Feb 2026 10:11:35 +0800 Subject: [PATCH] fix: Invalid mapping of log ID has been fixed --- .../AbpLoggingSerilogElasticsearchMappers.cs | 38 ++++++++++++++++++- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/AbpLoggingSerilogElasticsearchMappers.cs b/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/AbpLoggingSerilogElasticsearchMappers.cs index 54e7c4871..33a359884 100644 --- a/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/AbpLoggingSerilogElasticsearchMappers.cs +++ b/aspnet-core/framework/logging/LINGYUN.Abp.Logging.Serilog.Elasticsearch/LINGYUN/Abp/AuditLogging/Serilog/Elasticsearch/AbpLoggingSerilogElasticsearchMappers.cs @@ -2,6 +2,7 @@ using LINGYUN.Abp.Logging.Serilog.Elasticsearch; using Riok.Mapperly.Abstractions; using Serilog.Events; +using System.Collections.Generic; using Volo.Abp.Mapperly; namespace LINGYUN.Abp.AuditLogging.Serilog.Elasticsearch; @@ -31,12 +32,45 @@ public partial class SerilogFieldToLogFieldMapper : MapperBase { - [MapPropertyFromSource(nameof(LogInfo.Level), Use = nameof(GetLogLevel))] + private readonly SerilogFieldToLogFieldMapper _logFieldMapper; + private readonly SerilogExceptionToLogExceptionMapper _logExceptionMapper; + public SerilogInfoToLogInfoMapper( + SerilogFieldToLogFieldMapper logFieldMapper, + SerilogExceptionToLogExceptionMapper logExceptionMapper) + { + _logFieldMapper = logFieldMapper; + _logExceptionMapper = logExceptionMapper; + } + + [MapPropertyFromSource(nameof(SerilogInfo.Level), Use = nameof(GetLogLevel))] public override partial LogInfo Map(SerilogInfo source); - [MapPropertyFromSource(nameof(LogInfo.Level), Use = nameof(GetLogLevel))] + [MapPropertyFromSource(nameof(SerilogInfo.Level), Use = nameof(GetLogLevel))] public override partial void Map(SerilogInfo source, LogInfo destination); + public override void AfterMap(SerilogInfo source, LogInfo destination) + { + if (source.Exceptions != null) + { + destination.Exceptions ??= new List(); + destination.Exceptions.Clear(); + + foreach (var exception in source.Exceptions) + { + var logException = _logExceptionMapper.Map(exception); + _logExceptionMapper.AfterMap(exception, logException); + destination.Exceptions.Add(logException); + } + } + + if (source.Fields != null) + { + var logFields = _logFieldMapper.Map(source.Fields); + _logFieldMapper.AfterMap(source.Fields, logFields); + destination.Fields = logFields; + } + } + [UserMapping(Default = false)] private static Microsoft.Extensions.Logging.LogLevel GetLogLevel(SerilogInfo source) {