You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2022/01/13 21:09:05 UTC
[logging-log4j2] 01/02: Add CategoryUtil#getAppenders() and getFilters(); add Javadoc.
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a commit to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git
commit 7f565a3e3ef030f0365d1e203b22df788de3fb0e
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Thu Jan 13 16:08:21 2022 -0500
Add CategoryUtil#getAppenders() and getFilters(); add Javadoc.
Refactor duplication.
---
.../org/apache/log4j/legacy/core/CategoryUtil.java | 97 +++++++++++++++++-----
1 file changed, 78 insertions(+), 19 deletions(-)
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/legacy/core/CategoryUtil.java b/log4j-1.2-api/src/main/java/org/apache/log4j/legacy/core/CategoryUtil.java
index 04c47aa..ea6b43c 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/legacy/core/CategoryUtil.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/legacy/core/CategoryUtil.java
@@ -16,45 +16,104 @@
*/
package org.apache.log4j.legacy.core;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.function.Supplier;
+
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.Logger;
+import org.apache.logging.log4j.core.Appender;
+import org.apache.logging.log4j.core.Filter;
import org.apache.logging.log4j.spi.LoggerContext;
/**
- * Provide access to Log4j Core Logger methods.
+ * Delegates to {@code Logger} methods implemented by {@code log4j-core} if appropriate.
*/
public final class CategoryUtil {
+ private static org.apache.logging.log4j.core.Logger asCore(final Logger logger) {
+ return (org.apache.logging.log4j.core.Logger) logger;
+ }
+
+ private static <T> T get(final Logger logger, final Supplier<T> run, final T defaultValue) {
+ return isCore(logger) ? run.get() : defaultValue;
+ }
+
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#getAppenders()} if appropriate.
+ *
+ * @param logger The target logger.
+ * @return A Map containing the Appender's name as the key and the Appender as the value.
+ */
+ public static Map<String, Appender> getAppenders(final Logger logger) {
+ return get(logger, asCore(logger)::getAppenders, null);
+ }
+
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#getFilters()} if appropriate.
+ *
+ * @param logger The target logger.
+ * @return An Iterator over all the Filters associated with the Logger.
+ */
+ public static Iterator<Filter> getFilters(final Logger logger) {
+ return get(logger, asCore(logger)::getFilters, null);
+ }
+
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#getContext()} if appropriate.
+ *
+ * @param logger The target logger.
+ * @return the LoggerContext.
+ */
public static LoggerContext getLoggerContext(final Logger logger) {
- if (logger instanceof org.apache.logging.log4j.core.Logger) {
- return ((org.apache.logging.log4j.core.Logger) logger).getContext();
- }
- return null;
+ return get(logger, asCore(logger)::getContext, null);
}
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#getParent()} if appropriate.
+ *
+ * @param logger The target logger.
+ * @return The parent Logger.
+ */
public static Logger getParent(final Logger logger) {
- if (logger instanceof org.apache.logging.log4j.core.Logger) {
- return ((org.apache.logging.log4j.core.Logger) logger).getParent();
- }
- return null;
+ return get(logger, asCore(logger)::getParent, null);
}
-
+
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#isAdditive()} if appropriate.
+ *
+ * @param logger The target logger.
+ * @return true if the associated LoggerConfig is additive, false otherwise.
+ */
public static boolean isAdditive(final Logger logger) {
- if (logger instanceof org.apache.logging.log4j.core.Logger) {
- return ((org.apache.logging.log4j.core.Logger) logger).isAdditive();
- }
- return false;
+ return get(logger, asCore(logger)::isAdditive, false);
+ }
+
+ private static boolean isCore(final Logger logger) {
+ return logger instanceof org.apache.logging.log4j.core.Logger;
}
- public static void setAdditivity(final Logger logger, final boolean additivity) {
- if (logger instanceof org.apache.logging.log4j.core.Logger) {
- ((org.apache.logging.log4j.core.Logger) logger).setAdditive(additivity);
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#setAdditive(boolean)} if appropriate.
+ *
+ * @param logger The target logger.
+ * @param additive Boolean value to indicate whether the Logger is additive or not.
+ */
+ public static void setAdditivity(final Logger logger, final boolean additive) {
+ if (isCore(logger)) {
+ asCore(logger).setAdditive(additive);
}
}
+ /**
+ * Delegates to {@link org.apache.logging.log4j.core.Logger#setLevel(Level)} if appropriate.
+ *
+ * @param logger The target logger.
+ * @param level The Level to use on this Logger, may be null.
+ */
public static void setLevel(final Logger logger, final Level level) {
- if (logger instanceof org.apache.logging.log4j.core.Logger) {
- ((org.apache.logging.log4j.core.Logger) logger).setLevel(level);
+ if (isCore(logger)) {
+ asCore(logger).setLevel(level);
}
}