001 package org.apache.maven.cli;
002
003 /*
004 * Licensed to the Apache Software Foundation (ASF) under one
005 * or more contributor license agreements. See the NOTICE file
006 * distributed with this work for additional information
007 * regarding copyright ownership. The ASF licenses this file
008 * to you under the Apache License, Version 2.0 (the
009 * "License"); you may not use this file except in compliance
010 * with the License. You may obtain a copy of the License at
011 *
012 * http://www.apache.org/licenses/LICENSE-2.0
013 *
014 * Unless required by applicable law or agreed to in writing,
015 * software distributed under the License is distributed on an
016 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017 * KIND, either express or implied. See the License for the
018 * specific language governing permissions and limitations
019 * under the License.
020 */
021
022 import java.util.Locale;
023
024 import org.codehaus.plexus.logging.AbstractLoggerManager;
025 import org.codehaus.plexus.logging.Logger;
026 import org.codehaus.plexus.logging.LoggerManager;
027 import org.codehaus.plexus.logging.console.ConsoleLogger;
028 import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
029
030 /**
031 * This is a simple logger manager that will only write the logging statements to the console.
032 * <p/>
033 * Sample configuration:
034 * <pre>
035 * <logging>
036 * <implementation>org.codehaus.plexus.logging.ConsoleLoggerManager</implementation>
037 * <logger>
038 * <threshold>DEBUG</threshold>
039 * </logger>
040 * </logging>
041 * </pre>
042 *
043 * @author Jason van Zyl
044 * @author <a href="mailto:trygvis@inamo.no">Trygve Laugstøl</a>
045 */
046 public class MavenLoggerManager
047 extends AbstractLoggerManager
048 implements LoggerManager, Initializable
049 {
050 /**
051 * Message of this level or higher will be logged.
052 * <p/>
053 * This field is set by the plexus container thus the name is 'threshold'. The field
054 * currentThreshold contains the current setting of the threshold.
055 */
056 private String threshold = "info";
057
058 private int currentThreshold;
059
060 private Logger logger;
061
062 public MavenLoggerManager( Logger logger )
063 {
064 this.logger = logger;
065 }
066
067 public void initialize()
068 {
069 debug( "Initializing ConsoleLoggerManager: " + this.hashCode() + "." );
070
071 currentThreshold = parseThreshold( threshold );
072
073 if ( currentThreshold == -1 )
074 {
075 debug( "Could not parse the threshold level: '" + threshold + "', setting to debug." );
076 currentThreshold = Logger.LEVEL_DEBUG;
077 }
078 }
079
080 public void setThreshold( int currentThreshold )
081 {
082 this.currentThreshold = currentThreshold;
083 }
084
085 public void setThresholds( int currentThreshold )
086 {
087 this.currentThreshold = currentThreshold;
088
089 logger.setThreshold( currentThreshold );
090 }
091
092 /** @return Returns the threshold. */
093 public int getThreshold()
094 {
095 return currentThreshold;
096 }
097
098 public void setThreshold( String role,
099 String roleHint,
100 int threshold )
101 {
102 }
103
104 public int getThreshold( String role,
105 String roleHint )
106 {
107 return currentThreshold;
108 }
109
110 public Logger getLoggerForComponent( String role,
111 String roleHint )
112 {
113 return logger;
114 }
115
116 public void returnComponentLogger( String role,
117 String roleHint )
118 {
119 }
120
121 public int getActiveLoggerCount()
122 {
123 return 1;
124 }
125
126 private int parseThreshold( String text )
127 {
128 text = text.trim().toLowerCase( Locale.ENGLISH );
129
130 if ( text.equals( "debug" ) )
131 {
132 return ConsoleLogger.LEVEL_DEBUG;
133 }
134 else if ( text.equals( "info" ) )
135 {
136 return ConsoleLogger.LEVEL_INFO;
137 }
138 else if ( text.equals( "warn" ) )
139 {
140 return ConsoleLogger.LEVEL_WARN;
141 }
142 else if ( text.equals( "error" ) )
143 {
144 return ConsoleLogger.LEVEL_ERROR;
145 }
146 else if ( text.equals( "fatal" ) )
147 {
148 return ConsoleLogger.LEVEL_FATAL;
149 }
150
151 return -1;
152 }
153
154 /**
155 * Remove this method and all references when this code is verified.
156 *
157 * @param msg
158 */
159 private void debug( String msg )
160 {
161 }
162 }