package org.smartly.packages.velocity.impl.vtools; import org.smartly.commons.logging.Level; import org.smartly.commons.logging.LoggingRepository; import org.smartly.commons.logging.util.LoggingUtils; import org.smartly.commons.util.FormatUtils; import org.smartly.commons.util.StringUtils; import java.util.HashMap; import java.util.Map; /** * console logger helper for VTL expressions. * * usage: * $console.log("hello") * * $console.log("custom_file", "hello") */ public class ConsoleTool { // ------------------------------------------------------------------------ // Constants // ------------------------------------------------------------------------ public static final String NAME = "console"; private final static String PREFIX = "VTL_console_"; private final static String DEFAULT_NAME = "default"; private final String _id; public ConsoleTool() { this(DEFAULT_NAME); } public ConsoleTool(final String id) { _id = id; } public ConsoleTool create(final String name){ return new ConsoleTool(name); } public void log(final Object item) { static_log(_id, item); } public void info(final Object item) { static_info(_id, item); } public void warn(final Object item) { static_warn(_id, item); } public void error(final Object item) { static_error(_id, item); } public void debug(final Object item) { static_debug(_id, item); } //-- CUSTOM LOGGER --// public void log(final String logger, final Object item) { static_log(logger, item); } public void info(final String logger, final Object item) { static_info(logger, item); } public void warn(final String logger, final Object item) { static_warn(logger, item); } public void error(final String logger, final Object item) { static_error(logger, item); } public void debug(final String logger, final Object item) { static_debug(logger, item); } // ------------------------------------------------------------------------ // p r i v a t e // ------------------------------------------------------------------------ // -------------------------------------------------------------------- // S T A T I C // -------------------------------------------------------------------- private static final Map<String, ConsoleTool> _loggers; static { _loggers = new HashMap<String, ConsoleTool>(); } private static String getKey(final String id) { final String key = StringUtils.hasText(id) ? PREFIX.concat(id) : PREFIX.concat(DEFAULT_NAME); if (!_loggers.containsKey(key)) { _loggers.put(id, new ConsoleTool(id)); LoggingRepository.getInstance().setLogFileName(key, "./smartly_".concat(key).concat(".log")); } return key; } private static void static_log(final String id, final Object item) { final String key = getKey(id); final String msg = FormatUtils.format("{0}", item); LoggingUtils.getLogger(key).log(Level.INFO, msg); } private static void static_info(final String id, final Object item) { final String key = getKey(id); final String msg = FormatUtils.format("{0}", item); LoggingUtils.getLogger(key).log(Level.INFO, msg); } private static void static_warn(final String id, final Object item) { final String key = getKey(id); final String msg = FormatUtils.format("{0}", item); LoggingUtils.getLogger(key).log(Level.WARNING, msg); } private static void static_error(final String id, final Object item) { final String key = getKey(id); final String msg = FormatUtils.format("{0}", item); LoggingUtils.getLogger(key).log(Level.SEVERE, msg); } private static void static_debug(final String id, final Object item) { final String key = getKey(id); final String msg = FormatUtils.format("{0}", item); LoggingUtils.getLogger(key).log(Level.FINE, msg); } }