001 package org.shiftone.jrat.util.log.target; 002 003 004 import org.shiftone.jrat.util.log.Constants; 005 006 007 /** 008 * This class is an indirection layer to the "real" LogTarget. This makes it 009 * possible to switch the LogTarget that is being used by many LogTargetLog 010 * instances in one statement. 011 * 012 * @author jeff@shiftone.org (Jeff Drost) 013 */ 014 public class ProxyLogTarget implements LogTarget, Constants { 015 016 private LogTarget logTarget; 017 private int currentLevel = DEFAULT_LEVEL; 018 019 public ProxyLogTarget(LogTarget logTarget) { 020 this.logTarget = logTarget; 021 } 022 023 024 public boolean isLevelEnabled(String topic, int level) { 025 return (level >= currentLevel); 026 } 027 028 029 public LogTarget getLogTarget() { 030 return logTarget; 031 } 032 033 034 public void setLogTarget(LogTarget logTarget) { 035 this.logTarget = logTarget; 036 } 037 038 039 public int getCurrentLevel() { 040 return currentLevel; 041 } 042 043 044 public void setCurrentLevel(int currentLevel) { 045 this.currentLevel = currentLevel; 046 } 047 048 049 public void log(String topic, int level, Object message, Throwable throwable) { 050 051 if (isLevelEnabled(topic, level)) { 052 logTarget.log(topic, level, message, throwable); 053 } 054 } 055 }