1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * See the License for the specific language governing permissions and 15 * limitations under the License. 16 */ 17 18 package org.apache.log4j.xml; 19 20 import org.apache.log4j.Level; 21 22 23 /** 24 This class introduces a new level level called TRACE. TRACE has 25 lower level than DEBUG. 26 27 */ 28 public class XLevel extends Level { 29 private static final long serialVersionUID = 7288304330257085144L; 30 31 static public final int TRACE_INT = Level.DEBUG_INT - 1; 32 static public final int LETHAL_INT = Level.FATAL_INT + 1; 33 34 35 private static String TRACE_STR = "TRACE"; 36 private static String LETHAL_STR = "LETHAL"; 37 38 39 public static final XLevel TRACE = new XLevel(TRACE_INT, TRACE_STR, 7); 40 public static final XLevel LETHAL = new XLevel(LETHAL_INT, LETHAL_STR, 41 0); 42 43 44 protected XLevel(int level, String strLevel, int syslogEquiv)45 XLevel(int level, String strLevel, int syslogEquiv) { 46 super(level, strLevel, syslogEquiv); 47 } 48 49 /** 50 Convert the string passed as argument to a level. If the 51 conversion fails, then this method returns {@link #TRACE}. 52 */ 53 public 54 static toLevel(String sArg)55 Level toLevel(String sArg) { 56 return (Level) toLevel(sArg, XLevel.TRACE); 57 } 58 59 60 public 61 static toLevel(String sArg, Level defaultValue)62 Level toLevel(String sArg, Level defaultValue) { 63 64 if(sArg == null) { 65 return defaultValue; 66 } 67 String stringVal = sArg.toUpperCase(); 68 69 if(stringVal.equals(TRACE_STR)) { 70 return XLevel.TRACE; 71 } else if(stringVal.equals(LETHAL_STR)) { 72 return XLevel.LETHAL; 73 } 74 75 return Level.toLevel(sArg, (Level) defaultValue); 76 } 77 78 79 public 80 static toLevel(int i)81 Level toLevel(int i) throws IllegalArgumentException { 82 switch(i) { 83 case TRACE_INT: return XLevel.TRACE; 84 case LETHAL_INT: return XLevel.LETHAL; 85 } 86 return Level.toLevel(i); 87 } 88 89 } 90 91