package net.northking.cctp.element.log;

/**
 * Keyword Running Log Interface <br>
 * <b>Notice</b>: The library itself does not need to implement the interface
 * <br>
 * Example：
 *
 * <pre>
 * &#64;Bean
 * public class RestClient {
 * 	&#64;Autowired
 * 	private Logger logger;
 * }
 * </pre>
 *
 * @author fengxiang.zhang
 * @since 1.0
 */
public interface Logger {

    void info(String message);

    /**
     * Support for {} placeholders
     *
     * @param format
     * @param arguments
     */
    void info(String format, Object... arguments);

    void error(String message);

    /**
     * Support for {} placeholders
     *
     * @param format
     * @param arguments
     */
    void error(String format, Object... arguments);

    void debug(String message);

    /**
     * Support for {} placeholders
     *
     * @param format
     * @param arguments
     */
    void debug(String format, Object... arguments);

    void warn(String message);

    /**
     * Support for {} placeholders
     *
     * @param format
     * @param arguments
     */
    void warn(String format, Object... arguments);

    /**
     * Support for {} placeholders
     *
     * @param level
     * @param format
     * @param arguments
     */
    void log(Level level, String format, Object... arguments);

}