/// <summary> /// Logs the given <paramref name="text"/> at the provided verbosity. /// </summary> /// <param name="minimumVerbosity">The minimum verbosity a logger must have in order to receive the message. /// </param> /// <param name="text">The line to log.</param> public static void WriteLine(VerbosityLevel minimumVerbosity, StringIfNotFormattableStringAdapter text) { lock (LoggingLock) { // write log line. var formattedText = (string)text; switch (minimumVerbosity) { case VerbosityLevel.Warn: NlogInstance.Warn(formattedText); break; case VerbosityLevel.Info: NlogInstance.Info(formattedText); break; case VerbosityLevel.Debug: NlogInstance.Debug(formattedText); break; case VerbosityLevel.Trace: NlogInstance.Trace(formattedText); break; default: throw new ArgumentOutOfRangeException( nameof(minimumVerbosity), minimumVerbosity, "Enum value not handled."); } } }
/// <summary> /// Writes the given <paramref name="formattableText"/>, formatted with <see cref="CultureInfo.InvariantCulture"/> and the given <paramref name="arguments"/>. /// </summary> /// <param name="minimumVerbosity">The minimum verbosity a logger must have in order to receive the message. /// </param> /// <param name="formattableText">A text with using wildcards as {0}, to fill with <paramref name="arguments"/>.</param> /// <param name="arguments">The arguments to fill in the <paramref name="formattableText"/>.</param> public static void WriteLine( VerbosityLevel minimumVerbosity, StringIfNotFormattableStringAdapter formattableText, params object[] arguments) { lock (LoggingLock) { WriteLine(minimumVerbosity, CultureInfo.InvariantCulture, formattableText, arguments); } }
/// <summary> /// Writes the given <paramref name="formattableText"/>, formatted with <paramref name="culture"/> and the given <paramref name="arguments"/>. /// </summary> /// <param name="minimumVerbosity">The minimum verbosity a logger must have in order to receive the message. /// </param> /// <param name="culture">The culture to use.</param> /// <param name="formattableText">A text with using wildcards as {0}, to fill with <paramref name="arguments"/>.</param> /// <param name="arguments">The arguments to fill in the <paramref name="formattableText"/>.</param> public static void WriteLine( VerbosityLevel minimumVerbosity, CultureInfo culture, StringIfNotFormattableStringAdapter formattableText, params object[] arguments) { lock (LoggingLock) { try { var text = string.Format(culture, formattableText, arguments); WriteLine(minimumVerbosity, text); } catch (Exception e) { WriteLine(VerbosityLevel.Warn, $"Error when formatting text: {e.Message}"); WriteLine(minimumVerbosity, formattableText); } } }