/*! ****************************************************************************** * * Pentaho Data Integration * * Copyright (C) 2002-2013 by Pentaho : http://www.pentaho.com * ******************************************************************************* * * 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. * ******************************************************************************/ package org.pentaho.di.core.logging; import org.pentaho.di.i18n.BaseMessages; public enum LogLevel { NOTHING( 0, "Nothing" ), ERROR( 1, "Error" ), MINIMAL( 2, "Minimal" ), BASIC( 3, "Basic" ), DETAILED( 4, "Detailed" ), DEBUG( 5, "Debug" ), ROWLEVEL( 6, "Rowlevel" ); /** for i18n purposes, needed by Translator2!! */ private static Class<?> PKG = LogLevel.class; public static final String[] logLevelDescriptions = { BaseMessages.getString( PKG, "LogWriter.Level.Nothing.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Error.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Minimal.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Basic.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Detailed.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Debug.LongDesc" ), BaseMessages.getString( PKG, "LogWriter.Level.Rowlevel.LongDesc" ), }; private int level; private String code; private LogLevel( int level, String code ) { this.level = level; this.code = code; } public int getLevel() { return level; } public String getCode() { return code; } public String getDescription() { return logLevelDescriptions[level]; } /** * Return the log level for a certain log level code * * @param code * the code to look for * @return the log level or BASIC if nothing matches. */ public static LogLevel getLogLevelForCode( String code ) { for ( LogLevel logLevel : values() ) { if ( logLevel.getCode().equals( code ) ) { return logLevel; } } return BASIC; } /** * @param filterLogLevel * the filter log level * @return true if the log level is visible compared to the filter log level specified */ public boolean isVisible( LogLevel filterLogLevel ) { return getLevel() <= filterLogLevel.getLevel(); } /** * @return true if this level is Error or lower */ public boolean isError() { return this == ERROR; } /** * @return True if this level is Minimal or lower (which is nothing) */ public boolean isNothing() { return this.level >= NOTHING.level; } /** * @return True if this level is Minimal */ public boolean isMinimal() { return this.level >= MINIMAL.level; } /** * @return True if this level is Basic */ public boolean isBasic() { return this.level >= BASIC.level; } /** * @return True if this level is Detailed */ public boolean isDetailed() { return this.level >= DETAILED.level; } /** * @return True if this level is Debug */ public boolean isDebug() { return this.level >= DEBUG.level; } /** * @return True if this level is Row level */ public boolean isRowlevel() { return this.level >= ROWLEVEL.level; } /** * @return An array of log level descriptions, sorted by level (0==Nothing, 6=Row Level) */ public static String[] getLogLevelDescriptions() { return logLevelDescriptions; } /** * @return An array of log level codes, sorted by level (0==Nothing, 6=Row Level) */ public static String[] logLogLevelCodes() { String[] codes = new String[values().length]; for ( int i = 0; i < codes.length; i++ ) { codes[i] = values()[i].getCode(); } return codes; } }