package org.codehaus.plexus.container.initialization; /* * Copyright 2001-2006 Codehaus Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ import org.codehaus.plexus.PlexusConstants; import org.codehaus.plexus.PlexusContainer; import org.codehaus.plexus.component.repository.ComponentDescriptor; import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException; import org.codehaus.plexus.component.repository.exception.ComponentLookupException; import org.codehaus.plexus.logging.Logger; import org.codehaus.plexus.logging.LoggerManager; import org.codehaus.plexus.logging.console.ConsoleLoggerManager; /** @author Jason van Zyl */ public class InitializeLoggerManagerPhase extends AbstractCoreComponentInitializationPhase { public void initializeCoreComponent( ContainerInitializationContext context ) throws ContainerInitializationException { LoggerManager loggerManager = context.getContainer().getLoggerManager(); // ---------------------------------------------------------------------- // The logger manager may have been set programmatically so we need // to check. If it hasn't then we will try to look up a logger manager // that may have been specified in the plexus.xml file. If that doesn't // work then we'll programmatcially stuff in the console logger. // ---------------------------------------------------------------------- if ( loggerManager == null ) { try { loggerManager = context.getContainer().lookup( LoggerManager.class ); } catch ( ComponentLookupException e ) { ComponentDescriptor cd = new ComponentDescriptor(); cd.setRole( LoggerManager.ROLE ); cd.setRoleHint( PlexusConstants.PLEXUS_DEFAULT_HINT ); cd.setImplementation( ConsoleLoggerManager.class.getName() ); try { context.getContainer().addComponentDescriptor( cd ); } catch ( ComponentRepositoryException cre ) { throw new ContainerInitializationException( "Error setting up logging manager.", cre ); } loggerManager = new ConsoleLoggerManager( "info" ); } context.getContainer().setLoggerManager( loggerManager ); } Logger logger = loggerManager.getLoggerForComponent( PlexusContainer.class.getName() ); context.getContainer().enableLogging( logger ); } }