using Microsoft.Extensions.Logging; using Serilog; using ILogger = Microsoft.Extensions.Logging.ILogger; namespace Infrastructure.Logging; /// /// Extension methods for contextual logging /// public static class LoggingExtensions { /// /// Adds a category to log messages /// /// The logger to enrich /// The log category /// Enriched logger instance public static ILogger WithCategory(this ILogger logger, string category) { logger.BeginScope(new Dictionary { ["Category"] = category }); return logger; } /// /// Adds a job name to log messages /// /// The logger to enrich /// The job name /// Enriched logger instance public static ILogger WithJob(this ILogger logger, string jobName) { logger.BeginScope(new Dictionary { ["JobName"] = jobName }); return logger; } /// /// Adds an instance name to log messages /// /// The logger to enrich /// The instance name /// Enriched logger instance public static ILogger WithInstance(this ILogger logger, string instanceName) { logger.BeginScope(new Dictionary { ["InstanceName"] = instanceName }); return logger; } /// /// Adds a category to Serilog log messages /// /// The Serilog logger /// The log category /// Enriched logger instance public static Serilog.ILogger WithCategory(this Serilog.ILogger logger, string category) { return logger.ForContext("Category", category); } /// /// Adds a job name to Serilog log messages /// /// The Serilog logger /// The job name /// Enriched logger instance public static Serilog.ILogger WithJob(this Serilog.ILogger logger, string jobName) { return logger.ForContext("JobName", jobName); } /// /// Adds an instance name to Serilog log messages /// /// The Serilog logger /// The instance name /// Enriched logger instance public static Serilog.ILogger WithInstance(this Serilog.ILogger logger, string instanceName) { return logger.ForContext("InstanceName", instanceName); } }