package eu.eudat.core.logger;

import com.fasterxml.jackson.core.JsonProcessingException;
import eu.eudat.core.models.exception.ApiExceptionLoggingModel;

/**
 * Created by ikalyvas on 5/30/2018.
 */
public interface Logger {

    <T> void debug(T model);

    <T> void debug(T model,String message);

    <T> void debug(String message);

    <T extends Exception> void debug(T exception);

    <T extends Exception> void debug(T exception,String message);

    <T> void warn(T model);

    <T> void warn(T model,String message);

    <T> void warn(String message);

    <T extends Exception> void warn(T exception);

    <T extends Exception> void warn(T exception,String message);

    <T> void info(String message);

    <T> void info(T model);

    <T> void info(T model,String message);

    <T extends RuntimeException> void info(T exception);

    <T extends RuntimeException> void info(T exception,String message);

    <T> void error(T loggingModel);

    <E extends Exception,P> void error(ApiExceptionLoggingModel<E,P> model);

    <T extends Exception> void error(T exception);

    <T extends Exception> void error(T exception,String message);
}
