44 lines
1.9 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|