namespace System.Logging;
using System.Diagnostics.CodeAnalysis;
/// Writing log entries of a message template and its values (.NET's
/// `LoggerExtensions`): `logger.LogInformation("Moved {Count} items", count)`;
/// each level with an event, an error, both, or neither.
public static class LoggerExtensions {
/// a `Trace` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogTrace(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Trace, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogTrace(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Trace, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogTrace(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Trace, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogTrace(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Trace, 0, null, message, move args);
}
/// a `Debug` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogDebug(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Debug, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogDebug(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Debug, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogDebug(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Debug, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogDebug(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Debug, 0, null, message, move args);
}
/// an `Information` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogInformation(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Information, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogInformation(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Information, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogInformation(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Information, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogInformation(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Information, 0, null, message, move args);
}
/// a `Warning` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogWarning(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Warning, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogWarning(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Warning, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogWarning(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Warning, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogWarning(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Warning, 0, null, message, move args);
}
/// an `Error` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogError(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Error, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogError(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Error, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogError(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Error, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogError(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Error, 0, null, message, move args);
}
/// a `Critical` entry.
[StructuredMessageTemplate(nameof(message))]
public static void LogCritical(this in ILogger logger, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Critical, eventId, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogCritical(this in ILogger logger, EventId eventId, string? message, params object?[] args) {
logger.Log(LogLevel.Critical, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogCritical(this in ILogger logger, Error? error, string? message, params object?[] args) {
logger.Log(LogLevel.Critical, 0, error, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void LogCritical(this in ILogger logger, string? message, params object?[] args) {
logger.Log(LogLevel.Critical, 0, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void Log(this in ILogger logger, LogLevel logLevel, string? message, params object?[] args) {
logger.Log(logLevel, 0, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void Log(this in ILogger logger, LogLevel logLevel, EventId eventId, string? message, params object?[] args) {
logger.Log(logLevel, eventId, null, message, move args);
}
[StructuredMessageTemplate(nameof(message))]
public static void Log(this in ILogger logger, LogLevel logLevel, Error? error, string? message, params object?[] args) {
logger.Log(logLevel, 0, error, message, move args);
}
/// An entry of `logLevel`: its state the template's values, its message
/// the template filled.
[StructuredMessageTemplate(nameof(message))]
public static void Log(this in ILogger logger, LogLevel logLevel, EventId eventId, Error? error, string? message, params object?[] args) {
logger.Log(logLevel, eventId, new FormattedLogValues(message, move args), error, FormattedLogValues.Message);
}
/// A scope of a message template and its values (`"Request {Id}"`).
[StructuredMessageTemplate(nameof(messageFormat))]
public static IDisposable? BeginScope(this in ILogger logger, string messageFormat, params object?[] args) {
return logger.BeginScope(new FormattedLogValues(messageFormat, move args));
}
}