using Telegrator.Logging; namespace Telegrator.Hosting.Logging { /// /// Adapter for Microsoft.Extensions.Logging to work with Telegrator logging system. /// This allows seamless integration with ASP.NET Core logging infrastructure. /// public class MicrosoftLoggingAdapter : ITelegratorLogger { private readonly Microsoft.Extensions.Logging.ILogger _logger; /// /// Initializes a new instance of MicrosoftLoggingAdapter. /// /// The Microsoft.Extensions.Logging logger instance. public MicrosoftLoggingAdapter(Microsoft.Extensions.Logging.ILogger logger) { _logger = logger ?? throw new ArgumentNullException(nameof(logger)); } /// public void Log(LogLevel level, string message, Exception? exception = null) { var msLogLevel = level switch { LogLevel.Trace => Microsoft.Extensions.Logging.LogLevel.Trace, LogLevel.Debug => Microsoft.Extensions.Logging.LogLevel.Debug, LogLevel.Information => Microsoft.Extensions.Logging.LogLevel.Information, LogLevel.Warning => Microsoft.Extensions.Logging.LogLevel.Warning, LogLevel.Error => Microsoft.Extensions.Logging.LogLevel.Error, _ => Microsoft.Extensions.Logging.LogLevel.Information }; if (exception != null) { _logger.Log(msLogLevel, default, exception, message); } else { _logger.Log(msLogLevel, message); } } } }