我正在使用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);
});
}
}
}
输出: