Конфигурация динамического ведения журнала Steeltoe с помощью Serilog(или любой структурированной библиотеки ведения журнала)
Вероятно, это повторение того, как настроить Steeltoe Dynamic Logging на сторонние регистраторы как Serilog?, Я хотел бы использовать конфигурацию динамического ведения журнала Steeltoe (Поможет мне динамически настраивать уровни ведения журнала без повторного развертывания) и хотел бы сделать свои операторы ведения журнала более структурированными. Поэтому я решил взглянуть на Serilog. Вот мой код
public class Program
{
/// <summary>
/// Application entry point.
/// </summary>
/// <param name="args">arguments.</param>
public static void Main(string[] args)
{
BuildWebHost(args).Run();
}
/// <summary>
///
/// </summary>
/// <param name="args"></param>
/// <returns></returns>
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>()
.ConfigureAppConfiguration((hostContext, config) =>
{
config.AddCloudFoundry();
})
.ConfigureLogging((context, builder) =>
{
// We need to clear providers which are added by CreateDefaultBuilder().
// Please refer https://github.com/aspnet/Logging/issues/648. Otherwise log entries will be duplicated
// since AddDynamicConsole again add console logger
builder.ClearProviders();
if (context.HostingEnvironment.IsDevelopment())
{
builder.AddDebug();
}
builder.AddDynamicConsole();
})
.UseSerilog((hostingContext, loggerConfiguration) => loggerConfiguration
.ReadFrom.Configuration(hostingContext.Configuration)
.Enrich.FromLogContext()
.WriteTo.Console(outputTemplate:
"[{Level:u3}] [{Properties}] {Message}{NewLine}{Exception}")
.WriteTo.Trace())
.Build();
}
Но это не работает, как ожидалось. В диспетчере приложений PCF я не вижу ни одного поставщика журналов, кроме "По умолчанию". Если я раскомментирую
UseSerilog()
они тоже вернулись. Кстати, я не хочу ограничивать себя Serilog, и возможно ли это с NLog(слышал, что он также поддерживает структурированное ведение журнала)? Или любые другие идеи объединить структурированное ведение журнала и конфигурацию динамического ведения журнала приветствуются
0 ответов
Steeltoe теперь имеет предварительную поддержку Serilog через Steeltoe.Extensions.Logging.SerilogDynamicLogger
, доступно в ветке dev MyGet feed. Исходный код и модульные тесты находятся в этом репозитории, мы будем рады вашим отзывам!
С новым пакетом NuGet вы сможете сделать это
new WebHostBuilder()
.ConfigureLogging((builderContext, loggingBuilder) =>
{
loggingBuilder.AddConfiguration(builderContext.Configuration.GetSection("Logging"));
// Add Steeltoe Dynamic Serilog provider
loggingBuilder.AddSerilogDynamicConsole();
})
И тогда вы будете на том же пути, что и с уже существующим динамическим регистратором.