Developer 02 ce462a8b66 Funktion: Hinzufügen von strukturierten Logging-Erweiterungen und Korrektur eines Parameterfehlers
- Hinzufügen der Methoden `LogMessageList` und `LogServiceMessage` für verbessertes Nachrichten-Logging.
- Korrektur der Schreibweise des Parameters `separator`.
- Dokumentation der Methoden für bessere Klarheit.
2024-04-19 10:05:43 +02:00

41 lines
2.3 KiB
C#

using DigitalData.Core.Contracts.Application;
using Microsoft.Extensions.Logging;
namespace DigitalData.Core.Application
{
/// <summary>
/// Provides extension methods for ILogger to handle logging of message collections and service messages more effectively.
/// </summary>
public static class LoggerExtensions
{
/// <summary>
/// Logs a list of messages at the specified log level.
/// </summary>
/// <param name="logger">The extended ILogger instance.</param>
/// <param name="logLevel">The severity level of the log entry.</param>
/// <param name="messages">The collection of messages to log.</param>
/// <param name="separator">The separator used to join messages. Default is newline.</param>
/// <param name="args">Additional arguments used for formatting the log message.</param>
public static void LogMessageList(this ILogger logger, LogLevel logLevel, IEnumerable<string> messages, string separator = "\n", params object?[] args)
{
if (messages.Any())
logger.Log(logLevel: logLevel, message: string.Join(separator, messages), args);
}
/// <summary>
/// Logs all messages from a service message instance, categorized by message type to appropriate log levels.
/// </summary>
/// <param name="logger">The extended ILogger instance.</param>
/// <param name="serviceMessage">The service message instance containing categorized messages.</param>
/// <param name="separator">The separator used to join messages within each category. Default is newline.</param>
public static void LogServiceMessage(this ILogger logger, IServiceMessage serviceMessage, string separator = "\n")
{
logger.LogMessageList(LogLevel.Trace, serviceMessage.TraceMessages, separator);
logger.LogMessageList(LogLevel.Debug, serviceMessage.DebugMessages, separator);
logger.LogMessageList(LogLevel.Information, serviceMessage.InformationMessages, separator);
logger.LogMessageList(LogLevel.Warning, serviceMessage.WarningMessages, separator);
logger.LogMessageList(LogLevel.Error, serviceMessage.ErrorMessages, separator);
logger.LogMessageList(LogLevel.Critical, serviceMessage.CriticalMessages, separator);
}
}
}