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.
This commit is contained in:
41
DigitalData.Core.Application/LoggerExtensions.cs
Normal file
41
DigitalData.Core.Application/LoggerExtensions.cs
Normal file
@@ -0,0 +1,41 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user