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); } }