KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > avalon > phoenix > components > logger > DefaultLogManager


1 /*
2  * Copyright (C) The Apache Software Foundation. All rights reserved.
3  *
4  * This software is published under the terms of the Apache Software License
5  * version 1.1, a copy of which has been included with this distribution in
6  * the LICENSE.txt file.
7  */

8 package org.apache.avalon.phoenix.components.logger;
9
10 import org.apache.avalon.excalibur.i18n.ResourceManager;
11 import org.apache.avalon.excalibur.i18n.Resources;
12 import org.apache.avalon.excalibur.logger.LogKitLoggerManager;
13 import org.apache.avalon.excalibur.logger.LoggerManager;
14 import org.apache.avalon.framework.configuration.Configuration;
15 import org.apache.avalon.framework.container.ContainerUtil;
16 import org.apache.avalon.framework.context.DefaultContext;
17 import org.apache.avalon.framework.logger.AbstractLogEnabled;
18 import org.apache.avalon.framework.logger.Logger;
19 import org.apache.avalon.phoenix.BlockContext;
20 import org.apache.avalon.phoenix.interfaces.LogManager;
21 import org.apache.avalon.phoenix.metadata.SarMetaData;
22
23 /**
24  * Interface that is used to manage Log objects for a Sar.
25  *
26  * @author <a HREF="mailto:peter at apache.org">Peter Donald</a>
27  */

28 public class DefaultLogManager
29     extends AbstractLogEnabled
30     implements LogManager
31 {
32     private static final Resources REZ =
33         ResourceManager.getPackageResources( SimpleLogKitManager.class );
34
35     /**
36      * Create a Logger hierarchy for specified application.
37      *
38      * @param metaData the metadata for application
39      * @param logs the configuration data for logging
40      * @param classLoader the ClassLoader for application
41      * @return the Log hierarchy
42      * @throws Exception if unable to create Loggers
43      * @todo pass classLoader down into LogKitManager and
44      * use that to try to load targets.
45      */

46     public Logger createHierarchy( final SarMetaData metaData,
47                                    final Configuration logs,
48                                    final ClassLoader JavaDoc classLoader )
49         throws Exception JavaDoc
50     {
51         final String JavaDoc sarName = metaData.getName();
52
53         final DefaultContext context = new DefaultContext();
54         context.put( BlockContext.APP_NAME, sarName );
55         context.put( BlockContext.APP_HOME_DIR, metaData.getHomeDirectory() );
56         context.put( "classloader", classLoader );
57
58         final String JavaDoc version = logs.getAttribute( "version", "1.0" );
59
60         if( getLogger().isDebugEnabled() )
61         {
62             final String JavaDoc message =
63                 REZ.getString( "logger-create", sarName, version );
64             getLogger().debug( message );
65         }
66         final LoggerManager loggerManager = createLoggerManager( version );
67         ContainerUtil.enableLogging( loggerManager, getLogger() );
68         ContainerUtil.contextualize( loggerManager, context );
69         ContainerUtil.configure( loggerManager, logs );
70         return loggerManager.getDefaultLogger();
71     }
72
73     private LoggerManager createLoggerManager( final String JavaDoc version )
74     {
75         if( version.equals( "1.0" ) )
76         {
77             return new SimpleLogKitManager();
78         }
79         else if( version.equals( "1.1" ) )
80         {
81             return new LogKitLoggerManager();
82         }
83         else
84         {
85             final String JavaDoc message = "Unknown log version specification";
86             throw new IllegalArgumentException JavaDoc( message );
87         }
88     }
89 }
90
Popular Tags