using Microsoft.Extensions.Logging; using System.Text; namespace EnvelopeGenerator.Extensions { public static class LoggerExtensions { public static void LogEnvelopeError(this ILogger logger, string envelopeReceiverId, Exception? exception = null, string? message = null, params object?[] args) { var sb = new StringBuilder().AppendLine(envelopeReceiverId.DecodeEnvelopeReceiverId().ToTitle()); if (message is not null) sb.AppendLine(message); if (exception is null) logger.Log(LogLevel.Error, sb.ToString(), args); else logger.Log(LogLevel.Error, exception, sb.AppendLine(exception.Message).ToString(), args); } public static void LogEnvelopeError(this ILogger logger, string? uuid, string? signature = null, Exception? exception = null, string? message = null, params object?[] args) { var sb = new StringBuilder($"Envelope Uuid: {uuid}"); if (signature is not null) sb.AppendLine().Append($"Receiver Signature: {signature}"); if (message is not null) sb.AppendLine().Append(message); if (exception is null) logger.Log(LogLevel.Error, sb.ToString(), args); else logger.Log(LogLevel.Error, exception, sb.ToString(), args); } public static string ToTitle(this (string? UUID, string? Signature) envelopeReceiverTuple) { return $"UUID is {envelopeReceiverTuple.UUID} and signature is {envelopeReceiverTuple.Signature}"; } } }