// Copyright (c) .NET Foundation. All rights reserved. // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; using System.Runtime.CompilerServices; using Microsoft.Extensions.Logging.Internal; namespace Microsoft.Extensions.Logging { /// /// Helpful extension methods on . /// Methods ending in *F take as a parameter. /// internal static class LoggingExtensions { /// /// Returns a value stating whether the 'debug' log level is enabled. /// Returns false if the logger instance is null. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsDebugLevelEnabled(this ILogger logger) { return IsLogLevelEnabledCore(logger, LogLevel.Debug); } /// /// Returns a value stating whether the 'error' log level is enabled. /// Returns false if the logger instance is null. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsErrorLevelEnabled(this ILogger logger) { return IsLogLevelEnabledCore(logger, LogLevel.Error); } /// /// Returns a value stating whether the 'information' log level is enabled. /// Returns false if the logger instance is null. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsInformationLevelEnabled(this ILogger logger) { return IsLogLevelEnabledCore(logger, LogLevel.Information); } /// /// Returns a value stating whether the 'verbose' log level is enabled. /// Returns false if the logger instance is null. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsVerboseLevelEnabled(this ILogger logger) { return IsLogLevelEnabledCore(logger, LogLevel.Verbose); } /// /// Returns a value stating whether the 'warning' log level is enabled. /// Returns false if the logger instance is null. /// [MethodImpl(MethodImplOptions.AggressiveInlining)] public static bool IsWarningLevelEnabled(this ILogger logger) { return IsLogLevelEnabledCore(logger, LogLevel.Warning); } [MethodImpl(MethodImplOptions.AggressiveInlining)] private static bool IsLogLevelEnabledCore(ILogger logger, LogLevel level) { return (logger != null && logger.IsEnabled(level)); } public static void LogDebugF(this ILogger logger, FormattableString message) { logger.LogDebug(message.Format, message.GetArguments()); } public static void LogDebugF(this ILogger logger, Exception error, FormattableString message) { logger.LogDebug(new FormattedLogValues(message.Format, message.GetArguments()), error); } public static void LogError(this ILogger logger, Exception error, string message) { logger.LogError(message, error); } public static void LogErrorF(this ILogger logger, Exception error, FormattableString message) { logger.LogError(new FormattedLogValues(message.Format, message.GetArguments()), error); } public static void LogInformationF(this ILogger logger, FormattableString message) { logger.LogInformation(message.Format, message.GetArguments()); } public static void LogVerboseF(this ILogger logger, FormattableString message) { logger.LogVerbose(message.Format, message.GetArguments()); } public static void LogWarningF(this ILogger logger, FormattableString message) { logger.LogWarning(message.Format, message.GetArguments()); } public static void LogWarningF(this ILogger logger, Exception error, FormattableString message) { logger.LogWarning(new FormattedLogValues(message.Format, message.GetArguments()), error); } } }