1 10 11 package org.picocontainer.gems.monitors; 12 13 import java.io.Serializable ; 14 import java.lang.reflect.Constructor ; 15 import java.lang.reflect.Member ; 16 import java.lang.reflect.Method ; 17 18 import org.apache.log4j.LogManager; 19 import org.apache.log4j.Logger; 20 import org.apache.log4j.Priority; 21 import org.picocontainer.monitors.AbstractComponentMonitor; 22 import org.picocontainer.monitors.DefaultComponentMonitor; 23 import org.picocontainer.ComponentMonitor; 24 25 26 35 public class Log4JComponentMonitor extends AbstractComponentMonitor implements Serializable { 36 37 private Logger logger; 38 private final ComponentMonitor delegate; 39 40 45 public Log4JComponentMonitor() { 46 delegate = new DefaultComponentMonitor(); 47 } 48 49 55 public Log4JComponentMonitor(Class loggerClass) { 56 this(loggerClass.getName()); 57 } 58 59 65 public Log4JComponentMonitor(String loggerName) { 66 this(LogManager.getLogger(loggerName)); 67 } 68 69 74 public Log4JComponentMonitor(Logger logger) { 75 this(); 76 this.logger = logger; 77 } 78 79 85 public Log4JComponentMonitor(Class loggerClass, ComponentMonitor delegate) { 86 this(loggerClass.getName(), delegate); 87 } 88 89 95 public Log4JComponentMonitor(String loggerName, ComponentMonitor delegate) { 96 this(LogManager.getLogger(loggerName), delegate); 97 } 98 99 104 public Log4JComponentMonitor(Logger logger, ComponentMonitor delegate) { 105 this(delegate); 106 this.logger = logger; 107 } 108 109 public Log4JComponentMonitor(ComponentMonitor delegate) { 110 this.delegate = delegate; 111 } 112 113 public void instantiating(Constructor constructor) { 114 Logger logger = getLogger(constructor); 115 if (logger.isDebugEnabled()) { 116 logger.debug(format(INSTANTIATING, new Object []{toString(constructor)})); 117 } 118 delegate.instantiating(constructor); 119 } 120 121 public void instantiated(Constructor constructor, long duration) { 122 Logger logger = getLogger(constructor); 123 if (logger.isDebugEnabled()) { 124 logger.debug(format(INSTANTIATED, new Object []{toString(constructor), new Long (duration)})); 125 } 126 delegate.instantiated(constructor, duration); 127 } 128 129 public void instantiated(Constructor constructor, Object instantiated, Object [] parameters, long duration) { 130 Logger logger = getLogger(constructor); 131 if (logger.isDebugEnabled()) { 132 logger.debug(format(INSTANTIATED2, new Object []{toString(constructor), new Long (duration), instantiated.getClass().getName(), toString(parameters)})); 133 } 134 delegate.instantiated(constructor, instantiated, parameters, duration); 135 } 136 137 public void instantiationFailed(Constructor constructor, Exception cause) { 138 Logger logger = getLogger(constructor); 139 if (logger.isEnabledFor(Priority.WARN)) { 140 logger.warn(format(INSTANTIATION_FAILED, new Object []{toString(constructor), cause.getMessage()}), cause); 141 } 142 delegate.instantiationFailed(constructor, cause); 143 } 144 145 public void invoking(Method method, Object instance) { 146 Logger logger = getLogger(method); 147 if (logger.isDebugEnabled()) { 148 logger.debug(format(INVOKING, new Object []{toString(method), instance})); 149 } 150 delegate.invoking(method, instance); 151 } 152 153 public void invoked(Method method, Object instance, long duration) { 154 Logger logger = getLogger(method); 155 if (logger.isDebugEnabled()) { 156 logger.debug(format(INVOKED, new Object []{toString(method), instance, new Long (duration)})); 157 } 158 delegate.invoked(method, instance, duration); 159 } 160 161 public void invocationFailed(Method method, Object instance, Exception cause) { 162 Logger logger = getLogger(method); 163 if (logger.isEnabledFor(Priority.WARN)) { 164 logger.warn(format(INVOCATION_FAILED, new Object []{toString(method), instance, cause.getMessage()}), cause); 165 } 166 delegate.invocationFailed(method, instance, cause); 167 } 168 169 public void lifecycleInvocationFailed(Method method, Object instance, RuntimeException cause) { 170 Logger logger = getLogger(method); 171 if (logger.isEnabledFor(Priority.WARN)) { 172 logger.warn(format(LIFECYCLE_INVOCATION_FAILED, new Object []{toString(method), instance, cause.getMessage()}), cause); 173 } 174 delegate.lifecycleInvocationFailed(method, instance, cause); 175 } 176 177 protected Logger getLogger(Member member) { 178 if ( logger != null ){ 179 return logger; 180 } 181 return LogManager.getLogger(member.getDeclaringClass()); 182 } 183 184 } 185 | Popular Tags |