/
aprogrammer
/
serilog
Обзор
Документация
Войти
/
aprogrammer
/
serilog
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
dev
src/Serilog/Log.cs
1 197 строк
58 KB
Ivan Maximov
Optimize AddPropertyIfAbsent (#1872)
03 май 2023, 04:32
Не верифицирован
03 май 2023, 04:32
5291b4b
Код
Авторство
О чём код?
// Copyright 2013-2015 Serilog Contributors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. namespace Serilog; /// <summary> /// An optional static entry point for logging that can be easily referenced /// by different parts of an application. To configure the <see cref="Log"/> /// set the Logger static property to a logger instance. /// </summary> /// <example> /// Log.Logger = new LoggerConfiguration() /// .WithConsoleSink() /// .CreateLogger(); /// /// var thing = "World"; /// Log.Logger.Information("Hello, {Thing}!", thing); /// </example> /// <remarks> /// The methods on <see cref="Log"/> (and its dynamic sibling <see cref="ILogger"/>) are guaranteed /// never to throw exceptions. Methods on all other types may. /// </remarks> public static class Log { static ILogger _logger = Serilog.Core.Logger.None; /// <summary> /// The globally-shared logger. /// </summary> /// <exception cref="ArgumentNullException">When <paramref name="value"/> is <code>null</code></exception> public static ILogger Logger { get => _logger; set => _logger = Guard.AgainstNull(value); } /// <summary> /// Resets <see cref="Logger"/> to the default and disposes the original if possible /// </summary> public static void CloseAndFlush() { var logger = Interlocked.Exchange(ref _logger, Serilog.Core.Logger.None); (logger as IDisposable)?.Dispose(); } #if FEATURE_ASYNCDISPOSABLE /// <summary> /// Resets <see cref="Logger"/> to the default and disposes the original if possible /// </summary> public static ValueTask CloseAndFlushAsync() { var logger = Interlocked.Exchange(ref _logger, Serilog.Core.Logger.None); return (logger as IAsyncDisposable)?.DisposeAsync() ?? default; } #endif /// <summary> /// Create a logger that enriches log events via the provided enrichers. /// </summary> /// <param name="enricher">Enricher that applies in the context.</param> /// <returns>A logger that will enrich log events as specified.</returns> public static ILogger ForContext(ILogEventEnricher enricher) { return Logger.ForContext(enricher); } /// <summary> /// Create a logger that enriches log events via the provided enrichers. /// </summary> /// <param name="enrichers">Enrichers that apply in the context.</param> /// <returns>A logger that will enrich log events as specified.</returns> public static ILogger ForContext(ILogEventEnricher[] enrichers) { return Logger.ForContext(enrichers); } /// <summary> /// Create a logger that enriches log events with the specified property. /// </summary> /// <returns>A logger that will enrich log events as specified.</returns> public static ILogger ForContext(string propertyName, object? value, bool destructureObjects = false) { return Logger.ForContext(propertyName, value, destructureObjects); } /// <summary> /// Create a logger that marks log events as being from the specified /// source type. /// </summary> /// <typeparam name="TSource">Type generating log messages in the context.</typeparam> /// <returns>A logger that will enrich log events as specified.</returns> public static ILogger ForContext<TSource>() => Logger.ForContext<TSource>(); /// <summary> /// Create a logger that marks log events as being from the specified /// source type. /// </summary> /// <param name="source">Type generating log messages in the context.</param> /// <returns>A logger that will enrich log events as specified.</returns> public static ILogger ForContext(Type source) => Logger.ForContext(source); /// <summary> /// Write an event to the log. /// </summary> /// <param name="logEvent">The event to write.</param> public static void Write(LogEvent logEvent) { Logger.Write(logEvent); } /// <summary> /// Write a log event with the specified level. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write(LogEventLevel level, string messageTemplate) { Logger.Write(level, messageTemplate); } /// <summary> /// Write a log event with the specified level. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T>(LogEventLevel level, string messageTemplate, T propertyValue) { Logger.Write(level, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the specified level. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T0, T1>(LogEventLevel level, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Logger.Write(level, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the specified level. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T0, T1, T2>(LogEventLevel level, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Logger.Write(level, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the specified level. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write(LogEventLevel level, string messageTemplate, params object?[]? propertyValues) { Logger.Write(level, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the specified level and associated exception. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write(LogEventLevel level, Exception? exception, string messageTemplate) { Logger.Write(level, exception, messageTemplate); } /// <summary> /// Write a log event with the specified level and associated exception. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T>(LogEventLevel level, Exception? exception, string messageTemplate, T propertyValue) { Logger.Write(level, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the specified level and associated exception. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T0, T1>(LogEventLevel level, Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Logger.Write(level, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the specified level and associated exception. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write<T0, T1, T2>(LogEventLevel level, Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Logger.Write(level, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the specified level and associated exception. /// </summary> /// <param name="level">The level of the event.</param> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> [MessageTemplateFormatMethod("messageTemplate")] public static void Write(LogEventLevel level, Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Write(level, exception, messageTemplate, propertyValues); } /// <summary> /// Determine if events at the specified level will be passed through /// to the log sinks. /// </summary> /// <param name="level">Level to check.</param> /// <returns><see langword="true"/> if the level is enabled; otherwise, <see langword="false"/>.</returns> public static bool IsEnabled(LogEventLevel level) => Logger.IsEnabled(level); /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Verbose("Staring into space, wondering if we're alone."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose(string messageTemplate) { Write(LogEventLevel.Verbose, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose("Staring into space, wondering if we're alone."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Verbose, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose("Staring into space, wondering if we're alone."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Verbose, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose("Staring into space, wondering if we're alone."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Verbose, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Verbose("Staring into space, wondering if we're alone."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose(string messageTemplate, params object?[]? propertyValues) { Logger.Verbose(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Verbose(ex, "Staring into space, wondering where this comet came from."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose(Exception? exception, string messageTemplate) { Write(LogEventLevel.Verbose, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose(ex, "Staring into space, wondering where this comet came from."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Verbose, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose(ex, "Staring into space, wondering where this comet came from."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Verbose, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Verbose(ex, "Staring into space, wondering where this comet came from."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Verbose, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Verbose"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Verbose(ex, "Staring into space, wondering where this comet came from."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Verbose(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Verbose(exception, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Debug("Starting up at {StartedAt}.", DateTime.Now); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug(string messageTemplate) { Write(LogEventLevel.Debug, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug("Starting up at {StartedAt}.", DateTime.Now); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Debug, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug("Starting up at {StartedAt}.", DateTime.Now); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Debug, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug("Starting up at {StartedAt}.", DateTime.Now); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Debug, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Debug("Starting up at {StartedAt}.", DateTime.Now); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug(string messageTemplate, params object?[]? propertyValues) { Logger.Debug(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Debug(ex, "Swallowing a mundane exception."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug(Exception? exception, string messageTemplate) { Write(LogEventLevel.Debug, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug(ex, "Swallowing a mundane exception."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Debug, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug(ex, "Swallowing a mundane exception."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Debug, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Debug(ex, "Swallowing a mundane exception."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Debug, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Debug"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Debug(ex, "Swallowing a mundane exception."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Debug(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Debug(exception, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information(string messageTemplate) { Write(LogEventLevel.Information, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Information, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Information, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Information, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Information("Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information(string messageTemplate, params object?[]? propertyValues) { Logger.Information(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information(Exception? exception, string messageTemplate) { Write(LogEventLevel.Information, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Information, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Information, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Information, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Information"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Information(ex, "Processed {RecordCount} records in {TimeMS}.", records.Length, sw.ElapsedMilliseconds); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Information(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Information(exception, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning(string messageTemplate) { Write(LogEventLevel.Warning, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Warning, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Warning, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Warning, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Warning("Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning(string messageTemplate, params object?[]? propertyValues) { Logger.Warning(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning(Exception? exception, string messageTemplate) { Write(LogEventLevel.Warning, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Warning, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Warning, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Warning, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Warning"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Warning(ex, "Skipped {SkipCount} records.", skippedRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Warning(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Warning(exception, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error(string messageTemplate) { Write(LogEventLevel.Error, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Error, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Error, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Error, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Error("Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error(string messageTemplate, params object?[]? propertyValues) { Logger.Error(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error(Exception? exception, string messageTemplate) { Write(LogEventLevel.Error, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Error, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Error, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Error, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Error"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Error(ex, "Failed {ErrorCount} records.", brokenRecords.Length); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Error(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Error(exception, messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Fatal("Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal(string messageTemplate) { Write(LogEventLevel.Fatal, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal("Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T>(string messageTemplate, T propertyValue) { Write(LogEventLevel.Fatal, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal("Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T0, T1>(string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Fatal, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal("Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T0, T1, T2>(string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Fatal, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level. /// </summary> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Fatal("Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal(string messageTemplate, params object?[]? propertyValues) { Logger.Fatal(messageTemplate, propertyValues); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <example> /// Log.Fatal(ex, "Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal(Exception? exception, string messageTemplate) { Write(LogEventLevel.Fatal, exception, messageTemplate); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal(ex, "Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T>(Exception? exception, string messageTemplate, T propertyValue) { Write(LogEventLevel.Fatal, exception, messageTemplate, propertyValue); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal(ex, "Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T0, T1>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1) { Write(LogEventLevel.Fatal, exception, messageTemplate, propertyValue0, propertyValue1); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValue0">Object positionally formatted into the message template.</param> /// <param name="propertyValue1">Object positionally formatted into the message template.</param> /// <param name="propertyValue2">Object positionally formatted into the message template.</param> /// <example> /// Log.Fatal(ex, "Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal<T0, T1, T2>(Exception? exception, string messageTemplate, T0 propertyValue0, T1 propertyValue1, T2 propertyValue2) { Write(LogEventLevel.Fatal, exception, messageTemplate, propertyValue0, propertyValue1, propertyValue2); } /// <summary> /// Write a log event with the <see cref="LogEventLevel.Fatal"/> level and associated exception. /// </summary> /// <param name="exception">Exception related to the event.</param> /// <param name="messageTemplate">Message template describing the event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <example> /// Log.Fatal(ex, "Process terminating."); /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static void Fatal(Exception? exception, string messageTemplate, params object?[]? propertyValues) { Logger.Fatal(exception, messageTemplate, propertyValues); } /// <summary> /// Uses configured scalar conversion and destructuring rules to bind a set of properties to a /// message template. Returns false if the template or values are invalid (<summary>ILogger</summary> /// methods never throw exceptions). /// </summary> /// <param name="messageTemplate">Message template describing an event.</param> /// <param name="propertyValues">Objects positionally formatted into the message template.</param> /// <param name="parsedTemplate">The internal representation of the template, which may be used to /// render the <paramref name="boundProperties"/> as text.</param> /// <param name="boundProperties">Captured properties from the template and <paramref name="propertyValues"/>.</param> /// <example> /// MessageTemplate template; /// IEnumerable<LogEventProperty> properties>; /// if (Log.BindMessageTemplate("Hello, {Name}!", new[] { "World" }, out template, out properties) /// { /// var propsByName = properties.ToDictionary(p => p.Name, p => p.Value); /// Console.WriteLine(template.Render(propsByName, null)); /// // -> "Hello, World!" /// } /// </example> [MessageTemplateFormatMethod("messageTemplate")] public static bool BindMessageTemplate(string messageTemplate, object?[] propertyValues, [NotNullWhen(true)] out MessageTemplate? parsedTemplate, [NotNullWhen(true)] out IEnumerable<LogEventProperty>? boundProperties) { return Logger.BindMessageTemplate(messageTemplate, propertyValues, out parsedTemplate, out boundProperties); } /// <summary> /// Uses configured scalar conversion and destructuring rules to bind a property value to its captured /// representation. /// </summary> /// <param name="propertyName">The name of the property. Must be non-empty.</param> /// <param name="value">The property value.</param> /// <param name="destructureObjects">If <see langword="true"/>, the value will be serialized as a structured /// object if possible; if <see langword="false"/>, the object will be recorded as a scalar or simple array.</param> /// <param name="property">The resulting property.</param> /// <returns>True if the property could be bound, otherwise false (<summary>ILogger</summary> /// methods never throw exceptions).</returns> public static bool BindProperty(string propertyName, object? value, bool destructureObjects, [NotNullWhen(true)] out LogEventProperty? property) { return Logger.BindProperty(propertyName, value, destructureObjects, out property); } }