All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.cookingfox.logging.adapter.Slf4JLoggerAdapter Maven / Gradle / Ivy

package com.cookingfox.logging.adapter;

import com.cookingfox.logging.api.Entry;
import com.cookingfox.logging.api.LoggerAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.LinkedHashMap;
import java.util.Map;

/**
 * Log adapter implementation using SLF4J library.
 */
public class Slf4JLoggerAdapter implements LoggerAdapter {

    //----------------------------------------------------------------------------------------------
    // PRIVATE PROPERTIES
    //----------------------------------------------------------------------------------------------

    /**
     * Collection of loggers, where the key is the caller class name.
     */
    private final Map loggers = new LinkedHashMap<>();

    //----------------------------------------------------------------------------------------------
    // PUBLIC METHODS
    //----------------------------------------------------------------------------------------------

    @Override
    public void debug(Entry entry) {
        getLogger(entry.getCaller()).debug(entry.getMessage());
    }

    @Override
    public void error(Entry entry) {
        getLogger(entry.getCaller()).error(entry.getMessage());
    }

    @Override
    public void info(Entry entry) {
        getLogger(entry.getCaller()).info(entry.getMessage());
    }

    @Override
    public void verbose(Entry entry) {
        getLogger(entry.getCaller()).trace(entry.getMessage());
    }

    @Override
    public void warn(Entry entry) {
        getLogger(entry.getCaller()).warn(entry.getMessage());
    }

    //----------------------------------------------------------------------------------------------
    // PRIVATE METHODS
    //----------------------------------------------------------------------------------------------

    /**
     * Creates and / or returns an SLF4J Logger instance for the calling class.
     *
     * @param caller The name of calling class.
     * @return SLF4J Logger instance.
     */
    private Logger getLogger(String caller) {
        Logger logger = loggers.get(caller);

        if (null == logger) {
            logger = LoggerFactory.getLogger(caller);
            loggers.put(caller, logger);
        }

        return logger;
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy