1 19 package org.apache.avalon.excalibur.logger.decorator; 20 21 import org.apache.avalon.framework.logger.Logger; 22 import org.apache.avalon.excalibur.logger.LoggerManager; 23 import java.util.Map ; 24 import java.util.HashMap ; 25 26 40 public class CachingDecorator extends LoggerManagerDecorator 41 { 42 46 private final Map m_loggers = new HashMap (); 47 57 private Logger m_defaultLogger = null; 58 59 62 public CachingDecorator( final LoggerManager loggerManager ) 63 { 64 super( loggerManager ); 65 } 66 67 70 public Logger getLoggerForCategory( final String categoryName ) 71 { 72 synchronized( m_loggers ) 73 { 74 Logger logger = (Logger) m_loggers.get( categoryName ); 75 76 if ( logger == null ) 77 { 78 logger = m_loggerManager.getLoggerForCategory( categoryName ); 79 80 if ( logger == null ) 81 { 82 final String message = "getLoggerForCategory('" + 83 categoryName + "')"; 84 throw new NullPointerException ( message ); 85 } 86 87 m_loggers.put( categoryName, logger ); 88 } 89 90 return logger; 91 } 92 } 93 94 99 public Logger getDefaultLogger() 100 { 101 synchronized( this ) 102 { 103 if ( m_defaultLogger == null ) 104 { 105 m_defaultLogger = m_loggerManager.getDefaultLogger(); 106 107 if ( m_defaultLogger == null ) 108 { 109 throw new NullPointerException ( "getDefaultLogger()" ); 110 } 111 } 112 return m_defaultLogger; 113 } 114 } 115 } 116 | Popular Tags |