This is an automated email from the ASF dual-hosted git repository. pkarwasz pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit adda4769c6bd38f016a8d93af86d6cb92d1271b0 Author: Gary Gregory <[email protected]> AuthorDate: Sun Feb 6 08:38:26 2022 -0500 Log4j 1.2 bridge missing UtilLoggingLevel. --- .../org/apache/log4j/helpers/UtilLoggingLevel.java | 236 +++++++++++++++++++++ .../apache/log4j/helpers/UtilLoggingLevelTest.java | 45 ++++ src/changes/changes.xml | 3 + 3 files changed, 284 insertions(+) diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java new file mode 100644 index 0000000..9917c63 --- /dev/null +++ b/log4j-1.2-api/src/main/java/org/apache/log4j/helpers/UtilLoggingLevel.java @@ -0,0 +1,236 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.log4j.helpers; + +import java.util.ArrayList; +import java.util.List; + +import org.apache.log4j.Level; + +/** + * An extension of the Level class that provides support for java.util.logging Levels. + */ +public class UtilLoggingLevel extends Level { + + /** + * Serialization version id. + */ + private static final long serialVersionUID = 909301162611820211L; + + /** + * Numerical value for SEVERE. + */ + public static final int SEVERE_INT = 22000; + /** + * Numerical value for WARNING. + */ + public static final int WARNING_INT = 21000; + + // INFO level defined in parent as 20000..no need to redefine here + + /** + * Numerical value for CONFIG. + */ + public static final int CONFIG_INT = 14000; + + /** + * Numerical value for FINE. + */ + public static final int FINE_INT = 13000; + + /** + * Numerical value for FINER. + */ + public static final int FINER_INT = 12000; + + /** + * Numerical value for FINEST. + */ + public static final int FINEST_INT = 11000; + + /** + * Numerical value for UNKNOWN. + */ + public static final int UNKNOWN_INT = 10000; + + /** + * SEVERE. + */ + public static final UtilLoggingLevel SEVERE = new UtilLoggingLevel(SEVERE_INT, "SEVERE", 0); + + /** + * WARNING. + */ + public static final UtilLoggingLevel WARNING = new UtilLoggingLevel(WARNING_INT, "WARNING", 4); + + /** + * INFO. + */ + // note: we've aligned the int values of the java.util.logging INFO level with log4j's level + public static final UtilLoggingLevel INFO = new UtilLoggingLevel(INFO_INT, "INFO", 5); + + /** + * CONFIG. + */ + public static final UtilLoggingLevel CONFIG = new UtilLoggingLevel(CONFIG_INT, "CONFIG", 6); + + /** + * FINE. + */ + public static final UtilLoggingLevel FINE = new UtilLoggingLevel(FINE_INT, "FINE", 7); + + /** + * FINER. + */ + public static final UtilLoggingLevel FINER = new UtilLoggingLevel(FINER_INT, "FINER", 8); + + /** + * FINEST. + */ + public static final UtilLoggingLevel FINEST = new UtilLoggingLevel(FINEST_INT, "FINEST", 9); + + /** + * Create new instance. + * + * @param level numeric value for level. + * @param levelStr symbolic name for level. + * @param syslogEquivalent Equivalent syslog severity. + */ + protected UtilLoggingLevel(final int level, final String levelStr, final int syslogEquivalent) { + super(level, levelStr, syslogEquivalent); + } + + /** + * Convert an integer passed as argument to a level. If the conversion fails, then this method returns the specified + * default. + * + * @param val numeric value. + * @param defaultLevel level to be returned if no level matches numeric value. + * @return matching level or default level. + */ + public static UtilLoggingLevel toLevel(final int val, final UtilLoggingLevel defaultLevel) { + switch (val) { + case SEVERE_INT: + return SEVERE; + + case WARNING_INT: + return WARNING; + + case INFO_INT: + return INFO; + + case CONFIG_INT: + return CONFIG; + + case FINE_INT: + return FINE; + + case FINER_INT: + return FINER; + + case FINEST_INT: + return FINEST; + + default: + return defaultLevel; + } + } + + /** + * Gets level matching numeric value. + * + * @param val numeric value. + * @return matching level or UtilLoggerLevel.FINEST if no match. + */ + public static Level toLevel(final int val) { + return toLevel(val, FINEST); + } + + /** + * Gets list of supported levels. + * + * @return list of supported levels. + */ + public static List getAllPossibleLevels() { + final ArrayList<UtilLoggingLevel> list = new ArrayList<>(); + list.add(FINE); + list.add(FINER); + list.add(FINEST); + list.add(INFO); + list.add(CONFIG); + list.add(WARNING); + list.add(SEVERE); + return list; + } + + /** + * Get level with specified symbolic name. + * + * @param s symbolic name. + * @return matching level or Level.DEBUG if no match. + */ + public static Level toLevel(final String s) { + return toLevel(s, Level.DEBUG); + } + + /** + * Get level with specified symbolic name. + * + * @param sArg symbolic name. + * @param defaultLevel level to return if no match. + * @return matching level or defaultLevel if no match. + */ + public static Level toLevel(final String sArg, final Level defaultLevel) { + if (sArg == null) { + return defaultLevel; + } + + final String s = sArg.toUpperCase(); + + if (s.equals("SEVERE")) { + return SEVERE; + } + + // if(s.equals("FINE")) return Level.FINE; + if (s.equals("WARNING")) { + return WARNING; + } + + if (s.equals("INFO")) { + return INFO; + } + + if (s.equals("CONFI")) { + return CONFIG; + } + + if (s.equals("FINE")) { + return FINE; + } + + if (s.equals("FINER")) { + return FINER; + } + + if (s.equals("FINEST")) { + return FINEST; + } + return defaultLevel; + } + +} diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/UtilLoggingLevelTest.java b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/UtilLoggingLevelTest.java new file mode 100644 index 0000000..ad2868b --- /dev/null +++ b/log4j-1.2-api/src/test/java/org/apache/log4j/helpers/UtilLoggingLevelTest.java @@ -0,0 +1,45 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You 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.apache.log4j.helpers; + +import junit.framework.*; + + +/** + * Unit tests for UtilLoggingLevel. + */ +public class UtilLoggingLevelTest extends TestCase { + + /** + * Create new instance of test. + * + * @param testName test name + */ + public UtilLoggingLevelTest(final String testName) { + super(testName); + } + + /** + * Test toLevel("fiNeSt"). + */ + public void testToLevelFINEST() { + assertSame(UtilLoggingLevel.FINEST, UtilLoggingLevel.toLevel("fiNeSt")); + } + +} + diff --git a/src/changes/changes.xml b/src/changes/changes.xml index 61b691b..a8722bd 100644 --- a/src/changes/changes.xml +++ b/src/changes/changes.xml @@ -343,6 +343,9 @@ <action dev="ggregory" type="fix" due-to="Gary Gregory"> Log4j 1.2 bridge missed org.apache.log4j.pattern.NameAbbreviator. </action> + <action dev="ggregory" type="fix" due-to="Gary Gregory"> + Log4j 1.2 bridge missing UtilLoggingLevel. + </action> <action dev="ggregory" type="fix"> JndiManager reverts to 2.17.0 behavior: Read the system property for each call. </action>
