using System;
namespace Umbraco.Core.Logging
{
///
/// Defines the logging service.
///
///
/// Message templates in logging methods follow the Message Templates specification
/// available at https://messagetemplates.org/ in order to support structured logging.
/// Implementations must ensure that they support these templates. Note that the
/// specification includes support for traditional C# numeric placeholders.
/// For instance, "Processed {Input} in {Time}ms."
///
public interface ILogger
{
///
/// Determines if logging is enabled at a specified level, for a reporting type.
///
/// The reporting type.
/// The level.
bool IsEnabled(Type reporting, LogLevel level);
///
/// Logs a fatal message with an exception.
///
/// The reporting type.
/// An exception.
/// A message.
void Fatal(Type reporting, Exception exception, string message);
///
/// Logs a fatal exception.
///
/// The reporting type.
/// An exception.
/// The message string is unspecified and is implementation-specific.
void Fatal(Type reporting, Exception exception);
///
/// Logs a fatal message.
///
/// The reporting type.
/// A message.
void Fatal(Type reporting, string message);
///
/// Logs a fatal message with an exception.
///
/// The reporting type.
/// An exception.
/// A message template.
/// Property values.
void Fatal(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues);
///
/// Logs a fatal message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Fatal(Type reporting, string messageTemplate, params object[] propertyValues);
///
/// Logs an error message with an exception.
///
/// The reporting type.
/// An exception.
/// A message.
void Error(Type reporting, Exception exception, string message);
///
/// Logs an error exception.
///
/// The reporting type.
/// An exception.
/// The message string is unspecified and is implementation-specific.
void Error(Type reporting, Exception exception);
///
/// Logs an error message.
///
/// The reporting type.
/// A message.
void Error(Type reporting, string message);
///
/// Logs an error message with an exception.
///
/// The reporting type.
/// An exception.
/// A message template.
/// Property values.
void Error(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues);
///
/// Logs an error message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Error(Type reporting, string messageTemplate, params object[] propertyValues);
///
/// Logs a warning message.
///
/// The reporting type.
/// A message.
void Warn(Type reporting, string message);
///
/// Logs a warning message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Warn(Type reporting, string messageTemplate, params object[] propertyValues);
///
/// Logs a warning message with an exception.
///
/// The reporting type.
/// An exception.
/// A message.
void Warn(Type reporting, Exception exception, string message);
///
/// Logs a warning message with an exception.
///
/// The reporting type.
/// An exception.
/// A message template.
/// Property values.
void Warn(Type reporting, Exception exception, string messageTemplate, params object[] propertyValues);
///
/// Logs an information message.
///
/// The reporting type.
/// A message.
void Info(Type reporting, string message);
///
/// Logs a info message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Info(Type reporting, string messageTemplate, params object[] propertyValues);
///
/// Logs a debugging message.
///
/// The reporting type.
/// A message.
void Debug(Type reporting, string message);
///
/// Logs a debug message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Debug(Type reporting, string messageTemplate, params object[] propertyValues);
///
/// Logs a verbose message.
///
/// The reporting type.
/// A message.
void Verbose(Type reporting, string message);
///
/// Logs a verbose message.
///
/// The reporting type.
/// A message template.
/// Property values.
void Verbose(Type reporting, string messageTemplate, params object[] propertyValues);
}
}