kreta/KretaWeb/Logger/HangfireLogger.cs
2024-03-13 00:33:46 +01:00

44 lines
1.9 KiB
C#

using System;
using System.Configuration;
using System.Diagnostics;
using Serilog;
using Serilog.Exceptions;
using Serilog.Formatting.Elasticsearch;
using Serilog.Sinks.Elasticsearch;
using LogEventLevel = Serilog.Events.LogEventLevel;
namespace Kreta.Web.Logger
{
public static class HangfireLogger
{
public static void SerilogGlobalConfiguration()
{
#if DEBUG
Serilog.Debugging.SelfLog.Enable(msg => Debug.WriteLine(msg));
#endif
Enum.TryParse<LogEventLevel>(ConfigurationManager.AppSettings["serilog:minimum-level"], true, out LogEventLevel logEventLevel);
var nodeUris = ConfigurationManager.AppSettings["serilog:write-to:Elasticsearch.nodeUris"];
var indexFormat = ConfigurationManager.AppSettings["serilog:write-to:Elasticsearch.indexFormat"];
bool.TryParse(ConfigurationManager.AppSettings["serilog:write-to:Elasticsearch.autoRegisterTemplate"], out var autoRegisterTemplate);
Enum.TryParse<AutoRegisterTemplateVersion>(ConfigurationManager.AppSettings["serilog:write-to:Elasticsearch.autoRegisterTemplateVersion"], true, out AutoRegisterTemplateVersion autoRegisterTemplateVersion);
Log.Logger = new LoggerConfiguration()
.Enrich.WithExceptionDetails()
.WriteTo.Elasticsearch(new ElasticsearchSinkOptions(new Uri(nodeUris))
{
IndexFormat = indexFormat,
MinimumLogEventLevel = logEventLevel,
AutoRegisterTemplate = autoRegisterTemplate,
AutoRegisterTemplateVersion = autoRegisterTemplateVersion,
CustomFormatter = new ExceptionAsObjectJsonFormatter(renderMessage: true)
})
.CreateLogger();
}
public static void ShutdownSerilog()
{
Log.CloseAndFlush();
}
}
}