using Quartz.Logging; using QuartzLogLevel = Quartz.Logging.LogLevel; namespace EnvelopeGenerator.Service; /// /// Bridges Quartz's to . /// Mirrors the legacy LogProvider.vb behavior. /// OpenNestedContext and OpenMappedContext are not implemented (same as legacy). /// internal sealed class QuartzLogProvider : ILogProvider { private readonly ILogger _logger; public QuartzLogProvider(ILogger logger) { _logger = logger; } public Logger GetLogger(string name) { return (level, func, exception, parameters) => { if (exception != null) { _logger.LogError(exception, exception.Message); } else if (func != null) { switch (level) { case QuartzLogLevel.Trace: case QuartzLogLevel.Debug: if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Debug)) _logger.LogDebug(func(), parameters); break; case QuartzLogLevel.Info: if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Information)) _logger.LogInformation(func(), parameters); break; case QuartzLogLevel.Warn: if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Warning)) _logger.LogWarning(func(), parameters); break; case QuartzLogLevel.Error: case QuartzLogLevel.Fatal: if (_logger.IsEnabled(Microsoft.Extensions.Logging.LogLevel.Error)) _logger.LogError(func(), parameters); break; } } return true; }; } public IDisposable OpenNestedContext(string message) => throw new NotImplementedException(); public IDisposable OpenMappedContext(string key, object value, bool destructure = false) => throw new NotImplementedException(); }