从Azure Functions V2禁用ColoredConsole日志记录提供程序

时间:2019-04-09 22:12:04

标签: azure azure-functions azure-functions-core-tools

我正在使用Serilog在asp.net核心中进行结构化日志记录,并希望将同一库与Azure Functions一起使用。

我的目标是通过Serilog将JSON格式的日志消息写入控制台接收器。它正在工作,但是Functions Framework也正在使用ColoredConsole提供程序编写基于文本的日志。我想禁用它。

从下面的代码中可以看到,我试图替换LoggerFactory并清除提供程序。仍然没有用。

[assembly: WebJobsStartup(typeof(FuncStartup))]
namespace Function.Test
{
    public class FuncStartup : IWebJobsStartup
    {
        public void Configure(IWebJobsBuilder builder)
        {

            var loggerConfiguration = new LoggerConfiguration()
                .Enrich.FromLogContext()
                .Enrich.WithExceptionDetails()
                .Enrich.WithEnvironmentUserName()
                .Enrich.WithMachineName()
                .Enrich.WithProcessId()
                .Enrich.WithProcessName()
                .Enrich.WithThreadId()
                .Enrich.With<ServiceVersionEnricher>()
                .WriteTo.Console(new JsonFormatter());

            Log.Logger = loggerConfiguration.CreateLogger();

            //return serviceCollection.Replace(new ServiceDescriptor(typeof(ILoggerFactory), s => new SerilogLoggerFactory(null, true), ServiceLifetime.Singleton));

            builder.Services.AddLogging(b =>
            {
                b.ClearProviders();
                b.AddSerilog(Log.Logger);
            });
        }
    }
}

输出:

enter image description here

0 个答案:

没有答案