001package org.javasimon.callback.logging;
002
003import java.util.logging.Level;
004import java.util.logging.Logger;
005
006/**
007 * Concrete log template using {@link Logger}.
008 *
009 * @author gquintana
010 */
011public class JULLogTemplate<C> extends LogTemplate<C> {
012
013        /** Target log template. */
014        private final Logger logger;
015        /** Logging level. */
016        private Level level;
017
018        /**
019         * Constructor.
020         *
021         * @param logger Logger
022         * @param level Level
023         */
024        public JULLogTemplate(Logger logger, Level level) {
025                this.logger = logger;
026                this.level = level;
027        }
028
029        /**
030         * Constructor.
031         *
032         * @param loggerName Logger name
033         * @param level Level
034         */
035        public JULLogTemplate(String loggerName, Level level) {
036                this(Logger.getLogger(loggerName), level);
037        }
038
039        /**
040         * Returns log level.
041         *
042         * @return log level
043         */
044        public Level getLevel() {
045                return level;
046        }
047
048        /**
049         * Changes log level.
050         *
051         * @param level new log level
052         */
053        public void setLevel(Level level) {
054                this.level = level;
055        }
056
057        /**
058         * Get logger
059         *
060         * @return Logger
061         */
062        public Logger getLogger() {
063                return logger;
064        }
065
066        /**
067         * {@inheritDoc }
068         * <p/>
069         * Logger is enabled if underlying logger is {@link Logger#isLoggable} is true for current level.
070         */
071        protected boolean isEnabled(C context) {
072                return logger.isLoggable(level);
073        }
074
075        protected void log(String message) {
076                logger.log(level, message);
077        }
078}