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}