using Serilog;
using Serilog.Configuration;
using Serilog.Core;
using Serilog.Events;
using System;
using System.Threading;

namespace HealthMonitor.WebApi.Configs
{
	public class ThreadInfoEnricher : ILogEventEnricher
	{
		public void Enrich(LogEvent logEvent, ILogEventPropertyFactory propertyFactory)
		{

			logEvent.AddPropertyIfAbsent(propertyFactory.CreateProperty("ThreadId", Thread.CurrentThread.ManagedThreadId));
		}
	}

	public static class EnricherExtensions
	{
		public static LoggerConfiguration WithThreadInfo(this LoggerEnrichmentConfiguration enrich)
		{
			if (enrich == null)
				throw new ArgumentNullException(nameof(enrich));
			return enrich.With<ThreadInfoEnricher>();
		}
	}
}