1 19 package org.apache.avalon.excalibur.logger.decorator; 20 21 import org.apache.avalon.framework.logger.Logger; 22 import org.apache.avalon.framework.container.ContainerUtil; 23 import org.apache.avalon.excalibur.logger.LoggerManager; 24 import org.apache.avalon.excalibur.logger.util.LoggerSwitch; 25 26 48 public class LogToSelfDecorator extends LoggerManagerDecorator 49 { 50 51 private final String m_switchTo; 52 53 private LoggerSwitch m_switch; 54 58 private Logger m_logger; 59 60 68 public LogToSelfDecorator( final LoggerManager loggerManager, final String switchTo ) 69 { 70 super( loggerManager ); 71 if ( switchTo == null ) throw new NullPointerException ( "switchTo" ); 72 m_switchTo = switchTo; 73 } 74 75 84 public void enableLogging( final Logger logger ) 85 { 86 if ( m_switch != null ) 87 { 88 throw new IllegalStateException ( "enableLogging() already called" ); 89 } 90 91 if ( logger == null ) 92 { 93 throw new NullPointerException ( "logger" ); 94 } 95 96 m_switch = new LoggerSwitch( logger ); 97 m_logger = m_switch.get(); 98 ContainerUtil.enableLogging( m_loggerManager, m_logger ); 99 } 100 101 108 public void start() throws Exception 109 { 110 114 super.start(); 115 116 final Logger preferred = m_loggerManager.getLoggerForCategory( m_switchTo ); 117 if ( m_logger.isDebugEnabled() ) 118 { 119 124 final String message = "LogToSelfDecorator: switching logging to '" + 125 m_switchTo + "'"; 126 m_logger.debug( message ); 127 } 128 129 m_switch.setPreferred( preferred ); 130 131 if ( m_logger.isDebugEnabled() ) 132 { 133 137 final String message = "Have switched logging to '" + 138 m_switchTo + "'"; 139 m_logger.debug( message ); 140 } 141 } 142 } 143 | Popular Tags |