代码之家  ›  专栏  ›  技术社区  ›  Peter Morris

我怎样才能丰富SerilogServiceBus.Message.CorrelationId

  •  0
  • Peter Morris  · 技术社区  · 5 年前

    Microsoft.Azure.ServiceBus.Message.CorrelationId 属性。

    public static class Function2
    {
        [FunctionName("Function2")]
        public static void Run([ServiceBusTrigger("test-pm")]Message myQueueItem, ILogger log)
        {
            log.LogInformation($"C# Queue trigger function processed: {myQueueItem}");
        }
    }
    

    到目前为止,我能够丰富我的日志与我自己的ILogEventEnricher和代码执行预期每次我记录。这不仅不管用,而且我认为这根本不是正确的方法。

    using Microsoft.Azure.Functions.Extensions.DependencyInjection;
    using Microsoft.Azure.WebJobs;
    using Microsoft.Azure.WebJobs.Hosting;
    using Serilog;
    using Serilog.Core;
    using Serilog.Events;
    
    [assembly: FunctionsStartup(typeof(AzureStuff.MyStartup))]
    namespace AzureStuff
    {
    
        public class MyStartup : IWebJobsStartup
        {
            public void Configure(IWebJobsBuilder builder)
            {
                Log.Logger = new LoggerConfiguration()
                    .Enrich.FromLogContext()
                    .Enrich.With<MyEnricher>()
                    .WriteTo.Debug()
                    .CreateLogger();
            }
        }
    
        public class MyEnricher : ILogEventEnricher
        {
            public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
            {
            }
        }
    }
    

    FunctionExecutingContext 进入 MyEnricher 因为 Enrich.With<TEnricher> 有一个 new() 对泛型的约束。

    0 回复  |  直到 5 年前