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);
}
}