namespace ScriptCs.Contracts
{
using System;
public interface ILog
{
///
/// Logs a message for a specified log level, if the is enabled for that log level.
///
/// The log level.
///
/// Optional function which creates the message.
/// Specify null to simply check if the logger is enabled for the .
///
/// An optional exception to include with the message.
///
/// Optional arguments for formatting the message created by .
///
///
/// true if the is enabled for the .
/// Otherwise false.
///
///
/// Note to implementers for optimal performance:
/// When the is null, simply return a
/// indicating whether the is enabled for the specified .
/// When the is not null, it should only be invoked
/// if the is enabled for the specified .
///
bool Log(
LogLevel logLevel,
Func createMessage = null,
Exception exception = null,
params object[] formatArgs);
}
}