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/19 14:03:19 UTC
[logging-log4j2] branch release-2.x updated (56c0ec9 -> 718ff1f)
This is an automated email from the ASF dual-hosted git repository.
ggregory pushed a change to branch release-2.x
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git.
from 56c0ec9 Bump maven-source-plugin from 3.0.1 to 3.2.1 (#719)
new 4d97c9e Sort methods.
new 6c1ff2c Fix parameter name.
new 1b79857 In-line single-use local variable.
new 2546cc1 Use classic toArray() trick.
new b5190a1 Reuse constant.
new f4b4428 Use classic toArray() trick.
new d577ef7 Use classic toArray() trick.
new deb4e77 Define and reuse constant.
new 543c441 Reuse empty array constants.
new 01e8c47 Reuse empty array constants.
new a48c776 Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
new bffff3c Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
new 718ff1f Merge branch 'release-2.x' of https://gitbox.apache.org/repos/asf/logging-log4j2 into release-2.x
The 13 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
Summary of changes:
.../org/apache/log4j/builders/AbstractBuilder.java | 2 +-
.../main/java/org/apache/logging/log4j/Level.java | 11 +-
.../log4j/spi/DefaultThreadContextStack.java | 4 +-
.../apache/logging/log4j/spi/LoggerContext.java | 5 +
.../org/apache/logging/log4j/util/LoaderUtil.java | 4 +-
.../org/apache/logging/log4j/core/Appender.java | 5 +
.../core/appender/rolling/PatternProcessor.java | 3 +-
.../log4j/core/config/AbstractConfiguration.java | 2 +-
.../logging/log4j/core/config/Configurator.java | 26 ++
.../config/plugins/processor/PluginProcessor.java | 4 +-
.../core/config/plugins/util/PluginBuilder.java | 4 +-
.../logging/log4j/core/filter/CompositeFilter.java | 2 +-
.../log4j/core/impl/JdkMapAdapterStringMap.java | 3 +-
.../logging/log4j/core/impl/ThrowableProxy.java | 4 +-
.../log4j/core/impl/ThrowableProxyHelper.java | 2 +-
.../logging/log4j/core/lookup/MapLookup.java | 3 +-
.../logging/log4j/core/pattern/FormattingInfo.java | 5 +
.../core/pattern/MessagePatternConverter.java | 3 +-
.../log4j/core/pattern/NameAbbreviator.java | 5 +-
.../logging/log4j/core/pattern/PatternParser.java | 2 +-
.../log4j/core/util/datetime/FastDatePrinter.java | 5 +-
.../apache/logging/dumbster/smtp/SmtpMessage.java | 2 +-
.../org/apache/logging/log4j/core/LoggerTest.java | 330 +++++++++++++--------
.../log4j/core/pattern/PatternParserTest2.java | 3 +-
.../apache/logging/log4j/jcl/LogFactoryImpl.java | 3 +-
.../jpa/converter/ThrowableAttributeConverter.java | 4 +-
.../apache/logging/slf4j/LoggerContextTest.java | 2 +-
.../apache/logging/slf4j/LoggerContextTest.java | 2 +-
src/changes/changes.xml | 3 +
29 files changed, 307 insertions(+), 146 deletions(-)
[logging-log4j2] 02/13: Fix parameter name.
Posted by gg...@apache.org.
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 6c1ff2c002884818b732978455e6dc2ec1ae289a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:48:28 2022 -0500
Fix parameter name.
---
log4j-api/src/main/java/org/apache/logging/log4j/Level.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
index a3fb75c..ab2344c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
@@ -283,11 +283,11 @@ public final class Level implements Comparable<Level>, Serializable {
* Converts the string passed as argument to a level. If the conversion fails, then this method returns
* {@link #DEBUG}.
*
- * @param sArg The name of the desired Level.
+ * @param level The name of the desired Level.
* @return The Level associated with the String.
*/
- public static Level toLevel(final String sArg) {
- return toLevel(sArg, Level.DEBUG);
+ public static Level toLevel(final String level) {
+ return toLevel(level, Level.DEBUG);
}
/**
[logging-log4j2] 05/13: Reuse constant.
Posted by gg...@apache.org.
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 b5190a1a793b792d2b96d53b1c4371e863434836
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:55:56 2022 -0500
Reuse constant.
---
.../src/main/java/org/apache/log4j/builders/AbstractBuilder.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
index 53543a4..cdf7f1b 100644
--- a/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
+++ b/log4j-1.2-api/src/main/java/org/apache/log4j/builders/AbstractBuilder.java
@@ -129,7 +129,7 @@ public abstract class AbstractBuilder {
}
f = f.getNext();
}
- return CompositeFilter.createFilters(filterList.toArray(new org.apache.logging.log4j.core.Filter[0]));
+ return CompositeFilter.createFilters(filterList.toArray(org.apache.logging.log4j.core.Filter.EMPTY_ARRAY));
} else if (level != null) {
return ThresholdFilter.createFilter(OptionConverter.convertLevel(level, Level.TRACE),
org.apache.logging.log4j.core.Filter.Result.NEUTRAL,
[logging-log4j2] 01/13: Sort methods.
Posted by gg...@apache.org.
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 4d97c9ef7393f37fe9b0bfe2862ae15ae1640c1a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:47:22 2022 -0500
Sort methods.
---
.../org/apache/logging/log4j/core/LoggerTest.java | 224 ++++++++++-----------
1 file changed, 112 insertions(+), 112 deletions(-)
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
index 9ee22f1..1cf24fe 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
@@ -56,11 +56,35 @@ import static org.junit.jupiter.api.Assertions.*;
public class LoggerTest {
static final String CONFIG = "log4j-test2.xml";
+ private static void checkMessageFactory(final MessageFactory messageFactory1, final Logger testLogger1) {
+ if (messageFactory1 == null) {
+ assertEquals(AbstractLogger.DEFAULT_MESSAGE_FACTORY_CLASS, testLogger1.getMessageFactory().getClass());
+ } else {
+ MessageFactory actual = testLogger1.getMessageFactory();
+ if (actual instanceof MessageFactory2Adapter) {
+ actual = ((MessageFactory2Adapter) actual).getOriginal();
+ }
+ assertEquals(messageFactory1, actual);
+ }
+ }
+ private static Logger testMessageFactoryMismatch(final String name,
+ final MessageFactory messageFactory1,
+ final MessageFactory messageFactory2) {
+ final Logger testLogger1 = (Logger) LogManager.getLogger(name, messageFactory1);
+ assertNotNull(testLogger1);
+ checkMessageFactory(messageFactory1, testLogger1);
+ final Logger testLogger2 = (Logger) LogManager.getLogger(name, messageFactory2);
+ assertNotNull(testLogger2);
+ checkMessageFactory(messageFactory2, testLogger2);
+ return testLogger1;
+ }
org.apache.logging.log4j.Logger logger;
org.apache.logging.log4j.Logger loggerChild;
org.apache.logging.log4j.Logger loggerGrandchild;
private final ListAppender app;
+
private final ListAppender host;
+
private final ListAppender noThrown;
public LoggerTest(final LoggerContext context, @Named("List") final ListAppender app, @Named("HostTest") final ListAppender host, @Named("NoThrowable") final ListAppender noThrown) {
@@ -77,6 +101,14 @@ public class LoggerTest {
}
@Test
+ public void basicFlow() {
+ logger.traceEntry();
+ logger.traceExit();
+ final List<LogEvent> events = app.getEvents();
+ assertEventCount(events, 2);
+ }
+
+ @Test
public void builder() {
logger.atDebug().withLocation().log("Hello");
Marker marker = MarkerManager.getMarker("test");
@@ -93,37 +125,6 @@ public class LoggerTest {
}
@Test
- public void basicFlow() {
- logger.traceEntry();
- logger.traceExit();
- final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 2);
- }
-
- @Test
- public void simpleFlow() {
- logger.entry(CONFIG);
- logger.traceExit(0);
- final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 2);
- }
-
- @Test
- public void simpleFlowDepreacted() {
- logger.entry(CONFIG);
- logger.exit(0);
- final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 2);
- }
-
- @Test
- public void throwing() {
- logger.throwing(new IllegalArgumentException("Test Exception"));
- final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 1);
- }
-
- @Test
public void catching() {
try {
throw new NullPointerException();
@@ -262,6 +263,20 @@ public class LoggerTest {
}
@Test
+ public void debugObject() {
+ logger.debug(new Date());
+ final List<LogEvent> events = app.getEvents();
+ assertEventCount(events, 1);
+ }
+
+ @Test
+ public void debugWithParms() {
+ logger.debug("Hello, {}", "World");
+ final List<LogEvent> events = app.getEvents();
+ assertEventCount(events, 1);
+ }
+
+ @Test
public void getLogger_String_MessageFactoryMismatch(final TestInfo testInfo) {
final Logger testLogger = testMessageFactoryMismatch(testInfo.getTestMethod().map(Method::getName).orElseThrow(AssertionError::new),
StringFormatterMessageFactory.INSTANCE, ParameterizedMessageFactory.INSTANCE);
@@ -280,76 +295,48 @@ public class LoggerTest {
assertEquals(String.format("%,d", Integer.MAX_VALUE), events.get(0).getMessage().getFormattedMessage());
}
- private static Logger testMessageFactoryMismatch(final String name,
- final MessageFactory messageFactory1,
- final MessageFactory messageFactory2) {
- final Logger testLogger1 = (Logger) LogManager.getLogger(name, messageFactory1);
- assertNotNull(testLogger1);
- checkMessageFactory(messageFactory1, testLogger1);
- final Logger testLogger2 = (Logger) LogManager.getLogger(name, messageFactory2);
- assertNotNull(testLogger2);
- checkMessageFactory(messageFactory2, testLogger2);
- return testLogger1;
- }
-
- private static void checkMessageFactory(final MessageFactory messageFactory1, final Logger testLogger1) {
- if (messageFactory1 == null) {
- assertEquals(AbstractLogger.DEFAULT_MESSAGE_FACTORY_CLASS, testLogger1.getMessageFactory().getClass());
- } else {
- MessageFactory actual = testLogger1.getMessageFactory();
- if (actual instanceof MessageFactory2Adapter) {
- actual = ((MessageFactory2Adapter) actual).getOriginal();
- }
- assertEquals(messageFactory1, actual);
- }
- }
-
@Test
- public void debugObject() {
- logger.debug(new Date());
+ public void mdc() {
+ ThreadContext.put("TestYear", "2010");
+ logger.debug("Debug message");
+ ThreadContext.clearMap();
+ logger.debug("Debug message");
final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 1);
+ assertEventCount(events, 2);
}
@Test
- public void debugWithParms() {
- logger.debug("Hello, {}", "World");
+ public void paramWithExceptionTest() throws Exception {
+ logger.error("Throwing with parameters {}", "TestParam", new NullPointerException("Test Exception"));
final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 1);
- }
-
- @Test
- public void testImpliedThrowable(final LoggerContext context) {
- final org.apache.logging.log4j.Logger testLogger = context.getLogger("org.apache.logging.log4j.hosttest");
- testLogger.debug("This is a test", new Throwable("Testing"));
- final List<String> msgs = host.getMessages();
- assertEquals(1, msgs.size(), "Incorrect number of messages. Expected 1, actual " + msgs.size());
- final String expected = "java.lang.Throwable: Testing";
- assertTrue(msgs.get(0).contains(expected), "Incorrect message data");
+ assertNotNull(events, "Log event list not returned");
+ assertEquals(1, events.size(), "Incorrect number of log events");
+ final LogEvent event = events.get(0);
+ final Throwable thrown = event.getThrown();
+ assertNotNull(thrown, "No throwable present in log event");
+ final Message msg = event.getMessage();
+ assertEquals("Throwing with parameters {}", msg.getFormat());
+ assertEquals("Throwing with parameters TestParam", msg.getFormattedMessage());
+ assertArrayEquals(new Object[] { "TestParam", thrown }, msg.getParameters());
}
-
@Test
- public void testSuppressedThrowable(final LoggerContext context) {
- final org.apache.logging.log4j.Logger testLogger = context.getLogger("org.apache.logging.log4j.nothrown");
- testLogger.debug("This is a test", new Throwable("Testing"));
- final List<String> msgs = noThrown.getMessages();
- assertEquals(1, msgs.size(), "Incorrect number of messages. Expected 1, actual " + msgs.size());
- final String suppressed = "java.lang.Throwable: Testing";
- assertFalse(msgs.get(0).contains(suppressed), "Incorrect message data");
+ public void simpleFlow() {
+ logger.entry(CONFIG);
+ logger.traceExit(0);
+ final List<LogEvent> events = app.getEvents();
+ assertEventCount(events, 2);
}
-
@Test
- public void mdc() {
- ThreadContext.put("TestYear", "2010");
- logger.debug("Debug message");
- ThreadContext.clearMap();
- logger.debug("Debug message");
+ public void simpleFlowDepreacted() {
+ logger.entry(CONFIG);
+ logger.exit(0);
final List<LogEvent> events = app.getEvents();
assertEventCount(events, 2);
}
+
@Test
public void structuredData() {
ThreadContext.put("loginId", "JohnDoe");
@@ -365,6 +352,36 @@ public class LoggerTest {
assertEventCount(events, 1);
}
+
+ @Test
+ public void testAdditivity(final LoggerContext context) throws Exception {
+ final Logger localLogger = context.getLogger("org.apache.test");
+ localLogger.error("Test parent additivity");
+ final List<LogEvent> events = app.getEvents();
+ assertEventCount(events, 1);
+ }
+
+ @Test
+ public void testImpliedThrowable(final LoggerContext context) {
+ final org.apache.logging.log4j.Logger testLogger = context.getLogger("org.apache.logging.log4j.hosttest");
+ testLogger.debug("This is a test", new Throwable("Testing"));
+ final List<String> msgs = host.getMessages();
+ assertEquals(1, msgs.size(), "Incorrect number of messages. Expected 1, actual " + msgs.size());
+ final String expected = "java.lang.Throwable: Testing";
+ assertTrue(msgs.get(0).contains(expected), "Incorrect message data");
+ }
+
+ @Test
+ public void testLevelInheritance(final LoggerContext context) throws Exception {
+ final Configuration config = context.getConfiguration();
+ final LoggerConfig loggerConfig = config.getLoggerConfig("org.apache.logging.log4j.core.LoggerTest");
+ assertNotNull(loggerConfig);
+ assertEquals(loggerConfig.getName(), "org.apache.logging.log4j.core.LoggerTest");
+ assertEquals(loggerConfig.getLevel(), Level.DEBUG);
+ final Logger localLogger = context.getLogger("org.apache.logging.log4j.core.LoggerTest");
+ assertSame(localLogger.getLevel(), Level.DEBUG, "Incorrect level - expected DEBUG, actual " + localLogger.getLevel());
+ }
+
@Test
public void testReconfiguration(final LoggerContext context) throws Exception {
final Configuration oldConfig = context.getConfiguration();
@@ -390,37 +407,20 @@ public class LoggerTest {
}
@Test
- public void testAdditivity(final LoggerContext context) throws Exception {
- final Logger localLogger = context.getLogger("org.apache.test");
- localLogger.error("Test parent additivity");
- final List<LogEvent> events = app.getEvents();
- assertEventCount(events, 1);
- }
-
- @Test
- public void testLevelInheritance(final LoggerContext context) throws Exception {
- final Configuration config = context.getConfiguration();
- final LoggerConfig loggerConfig = config.getLoggerConfig("org.apache.logging.log4j.core.LoggerTest");
- assertNotNull(loggerConfig);
- assertEquals(loggerConfig.getName(), "org.apache.logging.log4j.core.LoggerTest");
- assertEquals(loggerConfig.getLevel(), Level.DEBUG);
- final Logger localLogger = context.getLogger("org.apache.logging.log4j.core.LoggerTest");
- assertSame(localLogger.getLevel(), Level.DEBUG, "Incorrect level - expected DEBUG, actual " + localLogger.getLevel());
+ public void testSuppressedThrowable(final LoggerContext context) {
+ final org.apache.logging.log4j.Logger testLogger = context.getLogger("org.apache.logging.log4j.nothrown");
+ testLogger.debug("This is a test", new Throwable("Testing"));
+ final List<String> msgs = noThrown.getMessages();
+ assertEquals(1, msgs.size(), "Incorrect number of messages. Expected 1, actual " + msgs.size());
+ final String suppressed = "java.lang.Throwable: Testing";
+ assertFalse(msgs.get(0).contains(suppressed), "Incorrect message data");
}
@Test
- public void paramWithExceptionTest() throws Exception {
- logger.error("Throwing with parameters {}", "TestParam", new NullPointerException("Test Exception"));
+ public void throwing() {
+ logger.throwing(new IllegalArgumentException("Test Exception"));
final List<LogEvent> events = app.getEvents();
- assertNotNull(events, "Log event list not returned");
- assertEquals(1, events.size(), "Incorrect number of log events");
- final LogEvent event = events.get(0);
- final Throwable thrown = event.getThrown();
- assertNotNull(thrown, "No throwable present in log event");
- final Message msg = event.getMessage();
- assertEquals("Throwing with parameters {}", msg.getFormat());
- assertEquals("Throwing with parameters TestParam", msg.getFormattedMessage());
- assertArrayEquals(new Object[] { "TestParam", thrown }, msg.getParameters());
+ assertEventCount(events, 1);
}
}
[logging-log4j2] 07/13: Use classic toArray() trick.
Posted by gg...@apache.org.
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 d577ef74011b3fd5d8c7f76f7b41cda655b081f2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:59:13 2022 -0500
Use classic toArray() trick.
---
.../java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java
index da6a5e1..b0ef8ed 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextStack.java
@@ -32,6 +32,8 @@ import org.apache.logging.log4j.util.Strings;
*/
public class DefaultThreadContextStack implements ThreadContextStack, StringBuilderFormattable {
+ private static final Object[] EMPTY_OBJECT_ARRAY = {};
+
private static final long serialVersionUID = 5050501L;
private static final ThreadLocal<MutableThreadContextStack> STACK = new ThreadLocal<>();
@@ -261,7 +263,7 @@ public class DefaultThreadContextStack implements ThreadContextStack, StringBuil
if (result == null) {
return Strings.EMPTY_ARRAY;
}
- return result.toArray(new Object[result.size()]);
+ return result.toArray(EMPTY_OBJECT_ARRAY);
}
@Override
[logging-log4j2] 09/13: Reuse empty array constants.
Posted by gg...@apache.org.
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 543c441cdd590af61b7cadc5674c739afc0637e5
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 09:00:34 2022 -0500
Reuse empty array constants.
Refactor empty array constants.
---
.../src/main/java/org/apache/logging/log4j/spi/LoggerContext.java | 5 +++++
log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java | 5 +++++
.../org/apache/logging/log4j/core/config/AbstractConfiguration.java | 2 +-
.../logging/log4j/core/config/plugins/processor/PluginProcessor.java | 4 +++-
.../apache/logging/log4j/core/config/plugins/util/PluginBuilder.java | 4 +++-
.../java/org/apache/logging/log4j/core/filter/CompositeFilter.java | 2 +-
.../org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java | 3 ++-
.../main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java | 4 ++--
.../org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java | 2 +-
.../main/java/org/apache/logging/log4j/core/lookup/MapLookup.java | 3 ++-
.../apache/logging/log4j/core/pattern/MessagePatternConverter.java | 3 ++-
.../java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java | 5 ++++-
.../java/org/apache/logging/log4j/core/pattern/PatternParser.java | 2 +-
.../org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java | 5 ++++-
.../src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java | 2 +-
.../src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java | 3 ++-
.../core/appender/db/jpa/converter/ThrowableAttributeConverter.java | 4 +++-
17 files changed, 42 insertions(+), 16 deletions(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
index 29be5ac..1638569 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/LoggerContext.java
@@ -25,6 +25,11 @@ import org.apache.logging.log4j.message.MessageFactory;
public interface LoggerContext {
/**
+ * Empty array.
+ */
+ LoggerContext[] EMPTY_ARRAY = {};
+
+ /**
* Gets the anchor for some other context, such as a ClassLoader or ServletContext.
* @return The external context.
*/
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
index 91a0932..1ed1582 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/Appender.java
@@ -43,6 +43,11 @@ public interface Appender extends LifeCycle {
* @since 2.6
*/
String ELEMENT_TYPE = "appender";
+
+ /**
+ * Empty array.
+ */
+ Appender[] EMPTY_ARRAY = {};
/**
* Logs a LogEvent using whatever logic this Appender wishes to use. It is typically recommended to use a
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
index 5e4f566..41a072e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/AbstractConfiguration.java
@@ -380,7 +380,7 @@ public abstract class AbstractConfiguration extends AbstractFilterable implement
root.getReliabilityStrategy().beforeStopAppenders();
// Stop the appenders in reverse order in case they still have activity.
- final Appender[] array = appenders.values().toArray(new Appender[appenders.size()]);
+ final Appender[] array = appenders.values().toArray(Appender.EMPTY_ARRAY);
final List<Appender> async = getAsyncAppenders(array);
if (!async.isEmpty()) {
// LOG4J2-511, LOG4J2-392 stop AsyncAppenders first
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
index 4ee6917..b1ca407 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/processor/PluginProcessor.java
@@ -52,6 +52,8 @@ public class PluginProcessor extends AbstractProcessor {
// TODO: this could be made more abstract to allow for compile-time and run-time plugin processing
+ private static final Element[] EMPTY_ELEMENT_ARRAY = {};
+
/**
* The location of the plugin cache data file. This file is written to by this processor, and read from by
* {@link org.apache.logging.log4j.core.config.plugins.util.PluginManager}.
@@ -77,7 +79,7 @@ public class PluginProcessor extends AbstractProcessor {
return false;
}
collectPlugins(elements);
- writeCacheFile(elements.toArray(new Element[elements.size()]));
+ writeCacheFile(elements.toArray(EMPTY_ELEMENT_ARRAY));
messager.printMessage(Kind.NOTE, "Annotations processed");
return true;
} catch (final Exception ex) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
index 69623d3..b5788c1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
@@ -52,6 +52,8 @@ import org.apache.logging.log4j.util.StringBuilders;
*/
public class PluginBuilder implements Builder<Object> {
+ private static final Field[] EMPTY_FIELD_ARRAY = new Field[] {};
+
private static final Logger LOGGER = StatusLogger.getLogger();
private final PluginType<?> pluginType;
@@ -162,7 +164,7 @@ public class PluginBuilder implements Builder<Object> {
private void injectFields(final Builder<?> builder) throws IllegalAccessException {
final List<Field> fields = TypeUtil.getAllDeclaredFields(builder.getClass());
- AccessibleObject.setAccessible(fields.toArray(new Field[] {}), true);
+ AccessibleObject.setAccessible(fields.toArray(EMPTY_FIELD_ARRAY), true);
final StringBuilder log = new StringBuilder();
boolean invalid = false;
String reason = "";
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
index b942bbb..6286876 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/CompositeFilter.java
@@ -89,7 +89,7 @@ public final class CompositeFilter extends AbstractLifeCycle implements Iterable
} else {
filterList.remove(filter);
}
- return new CompositeFilter(filterList.toArray(new Filter[this.filters.length - 1]));
+ return new CompositeFilter(filterList.toArray(Filter.EMPTY_ARRAY));
}
@Override
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
index b45ba19..08f6d33 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/JdkMapAdapterStringMap.java
@@ -25,6 +25,7 @@ import java.util.Objects;
import org.apache.logging.log4j.util.BiConsumer;
import org.apache.logging.log4j.util.ReadOnlyStringMap;
import org.apache.logging.log4j.util.StringMap;
+import org.apache.logging.log4j.util.Strings;
import org.apache.logging.log4j.util.TriConsumer;
/**
@@ -91,7 +92,7 @@ public class JdkMapAdapterStringMap implements StringMap {
private String[] getSortedKeys() {
if (sortedKeys == null) {
- sortedKeys = map.keySet().toArray(new String[map.size()]);
+ sortedKeys = map.keySet().toArray(Strings.EMPTY_ARRAY);
Arrays.sort(sortedKeys, NULL_FIRST_COMPARATOR);
}
return sortedKeys;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
index bd10224..c8940f6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxy.java
@@ -49,8 +49,6 @@ import org.apache.logging.log4j.util.Strings;
*/
public class ThrowableProxy implements Serializable {
- static final ThrowableProxy[] EMPTY_ARRAY = {};
-
private static final char EOL = '\n';
private static final String EOL_STR = String.valueOf(EOL);
@@ -73,6 +71,8 @@ public class ThrowableProxy implements Serializable {
private final transient Throwable throwable;
+ static final ThrowableProxy[] EMPTY_ARRAY = {};
+
/**
* For JSON and XML IO via Jackson.
*/
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
index 955bdd7..84e2fd1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThrowableProxyHelper.java
@@ -138,7 +138,7 @@ class ThrowableProxyHelper {
proxies.add(new ThrowableProxy(candidate, suppressedVisited));
}
}
- return proxies.toArray(new ThrowableProxy[proxies.size()]);
+ return proxies.toArray(ThrowableProxy.EMPTY_ARRAY);
} catch (final Exception e) {
StatusLogger.getLogger().error(e);
}
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
index a7f815d..34ed17c 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
@@ -23,6 +23,7 @@ import java.util.Map;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.core.config.plugins.Plugin;
import org.apache.logging.log4j.message.MapMessage;
+import org.apache.logging.log4j.util.Strings;
/**
* A map-based lookup.
@@ -102,7 +103,7 @@ public class MapLookup implements StrLookup {
return null;
}
final int size = args.size();
- return initMap(args.toArray(new String[size]), newMap(size));
+ return initMap(args.toArray(Strings.EMPTY_ARRAY), newMap(size));
}
static Map<String, String> toMap(final String[] args) {
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
index 6bdd56f..41222c6 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MessagePatternConverter.java
@@ -31,6 +31,7 @@ import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.MultiFormatStringBuilderFormattable;
import org.apache.logging.log4j.util.PerformanceSensitive;
import org.apache.logging.log4j.util.StringBuilderFormattable;
+import org.apache.logging.log4j.util.Strings;
/**
* Returns the event's rendered message in a StringBuilder.
@@ -99,7 +100,7 @@ public class MessagePatternConverter extends LogEventPatternConverter {
results.add(option);
}
}
- return results.toArray(new String[0]);
+ return results.toArray(Strings.EMPTY_ARRAY);
}
@Override
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
index 921a99e..318e3ff 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/NameAbbreviator.java
@@ -258,6 +258,9 @@ public abstract class NameAbbreviator {
* Fragment of an pattern abbreviator.
*/
private static final class PatternAbbreviatorFragment {
+
+ static final PatternAbbreviatorFragment[] EMPTY_ARRAY = {};
+
/**
* Count of initial characters of element to output.
*/
@@ -336,7 +339,7 @@ public abstract class NameAbbreviator {
"fragments must have at least one element");
}
- this.fragments = fragments.toArray(new PatternAbbreviatorFragment[0]);
+ this.fragments = fragments.toArray(PatternAbbreviatorFragment.EMPTY_ARRAY);
}
/**
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
index 9e66441..dc77f87 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/PatternParser.java
@@ -570,7 +570,7 @@ public final class PatternParser {
boolean errors = false;
for (final Class<?> clazz : parmTypes) {
if (clazz.isArray() && clazz.getName().equals("[Ljava.lang.String;")) {
- final String[] optionsArray = options.toArray(new String[options.size()]);
+ final String[] optionsArray = options.toArray(Strings.EMPTY_ARRAY);
parms[i] = optionsArray;
} else if (clazz.isAssignableFrom(Configuration.class)) {
parms[i] = config;
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
index a5ab486..06c4981 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/datetime/FastDatePrinter.java
@@ -164,7 +164,7 @@ public class FastDatePrinter implements DatePrinter, Serializable {
*/
private void init() {
final List<Rule> rulesList = parsePattern();
- mRules = rulesList.toArray(new Rule[rulesList.size()]);
+ mRules = rulesList.toArray(Rule.EMPTY_ARRAY);
int len = 0;
for (int i=mRules.length; --i >= 0; ) {
@@ -737,6 +737,9 @@ public class FastDatePrinter implements DatePrinter, Serializable {
* <p>Inner class defining a rule.</p>
*/
private interface Rule {
+
+ static final Rule[] EMPTY_ARRAY = {};
+
/**
* Returns the estimated length of the result.
*
diff --git a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
index 93e38d1..ebc3cf5 100644
--- a/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
+++ b/log4j-core/src/test/java/org/apache/logging/dumbster/smtp/SmtpMessage.java
@@ -88,7 +88,7 @@ public class SmtpMessage {
if (values == null) {
return Strings.EMPTY_ARRAY;
}
- return values.toArray(new String[values.size()]);
+ return values.toArray(Strings.EMPTY_ARRAY);
}
/**
diff --git a/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java b/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
index 6a318a4..615bb77 100644
--- a/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
+++ b/log4j-jcl/src/main/java/org/apache/logging/log4j/jcl/LogFactoryImpl.java
@@ -24,6 +24,7 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogConfigurationException;
import org.apache.commons.logging.LogFactory;
import org.apache.logging.log4j.spi.LoggerAdapter;
+import org.apache.logging.log4j.util.Strings;
/**
* Log4j binding for Commons Logging.
@@ -47,7 +48,7 @@ public class LogFactoryImpl extends LogFactory {
@Override
public String[] getAttributeNames() {
- return attributes.keySet().toArray(new String[attributes.size()]);
+ return attributes.keySet().toArray(Strings.EMPTY_ARRAY);
}
@Override
diff --git a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
index bbec319..50afb94 100644
--- a/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
+++ b/log4j-jpa/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ThrowableAttributeConverter.java
@@ -35,6 +35,8 @@ import org.apache.logging.log4j.util.Strings;
*/
@Converter(autoApply = false)
public class ThrowableAttributeConverter implements AttributeConverter<Throwable, String> {
+ private static final StackTraceElement[] EMPTY_STACK_TRACE_ELEMENT_ARRAY = new StackTraceElement[0];
+
private static final int CAUSED_BY_STRING_LENGTH = 10;
private static final Field THROWABLE_CAUSE;
@@ -118,7 +120,7 @@ public class ThrowableAttributeConverter implements AttributeConverter<Throwable
}
return this.getThrowable(throwableClassName, message, cause,
- stackTrace.toArray(new StackTraceElement[stackTrace.size()]));
+ stackTrace.toArray(EMPTY_STACK_TRACE_ELEMENT_ARRAY));
}
private Throwable getThrowable(final String throwableClassName, final String message, final Throwable cause,
[logging-log4j2] 08/13: Define and reuse constant.
Posted by gg...@apache.org.
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 deb4e774ab2528fbef817bdf41a957dbf55db4d7
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 08:01:44 2022 -0500
Define and reuse constant.
---
.../apache/logging/log4j/core/appender/rolling/PatternProcessor.java | 3 +--
.../java/org/apache/logging/log4j/core/pattern/FormattingInfo.java | 5 +++++
2 files changed, 6 insertions(+), 2 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
index 0bfa3d1..89d5266 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rolling/PatternProcessor.java
@@ -83,8 +83,7 @@ public class PatternProcessor {
final List<PatternConverter> converters = new ArrayList<>();
final List<FormattingInfo> fields = new ArrayList<>();
parser.parse(pattern, converters, fields, false, false, false);
- final FormattingInfo[] infoArray = new FormattingInfo[fields.size()];
- patternFields = fields.toArray(infoArray);
+ patternFields = fields.toArray(FormattingInfo.EMPTY_ARRAY);
final ArrayPatternConverter[] converterArray = new ArrayPatternConverter[converters.size()];
patternConverters = converters.toArray(converterArray);
this.fileExtension = FileExtension.lookupForFile(pattern);
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
index bd88679..fa2019f 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/FormattingInfo.java
@@ -65,6 +65,11 @@ public final class FormattingInfo {
private final boolean zeroPad;
/**
+ * Empty array.
+ */
+ public static final FormattingInfo[] EMPTY_ARRAY = {};
+
+ /**
* Creates new instance.
*
* @param leftAlign
[logging-log4j2] 03/13: In-line single-use local variable.
Posted by gg...@apache.org.
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 1b7985773ad3a4290a27a00c4c6d38f76c9db900
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:49:36 2022 -0500
In-line single-use local variable.
---
log4j-api/src/main/java/org/apache/logging/log4j/Level.java | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
index ab2344c..3897040 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
@@ -316,8 +316,7 @@ public final class Level implements Comparable<Level>, Serializable {
* @return An array of Levels.
*/
public static Level[] values() {
- final Collection<Level> values = Level.LEVELS.values();
- return values.toArray(new Level[values.size()]);
+ return Level.LEVELS.values().toArray(new Level[Level.LEVELS.values().size()]);
}
/**
[logging-log4j2] 11/13: Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
Posted by gg...@apache.org.
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 a48c77690e256d1f987896ed5bce8a3f052601a5
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 09:01:43 2022 -0500
Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
---
.../logging/log4j/core/config/Configurator.java | 26 +++++
.../org/apache/logging/log4j/core/LoggerTest.java | 106 ++++++++++++++++++++-
2 files changed, 128 insertions(+), 4 deletions(-)
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
index de69bcf..d42d1e3 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/Configurator.java
@@ -327,6 +327,20 @@ public final class Configurator {
}
}
+ /**
+ * Sets a logger's level.
+ *
+ * @param logger
+ * the logger
+ * @param level
+ * the new level
+ * @return the given logger
+ */
+ public static Logger setLevel(final Logger logger, final Level level) {
+ setLevel(logger.getName(), level);
+ return logger;
+ }
+
private static boolean setLevel(final LoggerConfig loggerConfig, final Level level) {
final boolean set = !loggerConfig.getLevel().equals(level);
if (set) {
@@ -373,6 +387,18 @@ public final class Configurator {
}
}
+ /**
+ * Sets a logger's level.
+ *
+ * @param loggerName
+ * the logger name
+ * @param level
+ * the new level
+ */
+ public static void setLevel(final String loggerName, final String level) {
+ setLevel(loggerName, Level.toLevel(level));
+ }
+
private static boolean setLevel(final String loggerName, final Level level, final Configuration config) {
boolean set;
LoggerConfig loggerConfig = config.getLoggerConfig(loggerName);
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
index 1cf24fe..5afc4bd 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/LoggerTest.java
@@ -117,7 +117,7 @@ public class LoggerTest {
final List<LogEvent> events = app.getEvents();
assertEventCount(events, 3);
assertEquals(
- "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:81)", events.get(0).getSource().toString(),
+ "org.apache.logging.log4j.core.LoggerTest.builder(LoggerTest.java:113)", events.get(0).getSource().toString(),
"Incorrect location");
assertEquals(Level.DEBUG, events.get(0).getLevel(), "Incorrect Level");
MatcherAssert.assertThat("Incorrect message", events.get(1).getMessage().getFormattedMessage(), equalTo("Hello John"));
@@ -143,7 +143,19 @@ public class LoggerTest {
}
@Test
- public void debugChangeLevel() {
+ public void debugChangeLevel_ForLogger() {
+ logger.debug("Debug message 1");
+ assertEventCount(app.getEvents(), 1);
+ Configurator.setLevel(logger, Level.OFF);
+ logger.debug("Debug message 2");
+ assertEventCount(app.getEvents(), 1);
+ Configurator.setLevel(logger, Level.DEBUG);
+ logger.debug("Debug message 3");
+ assertEventCount(app.getEvents(), 2);
+ }
+
+ @Test
+ public void debugChangeLevel_ForLoggerName() {
logger.debug("Debug message 1");
assertEventCount(app.getEvents(), 1);
Configurator.setLevel(logger.getName(), Level.OFF);
@@ -174,7 +186,26 @@ public class LoggerTest {
}
@Test
- public void debugChangeLevelChildLogger() {
+ public void debugChangeLevelChildLogger_ForLogger() {
+ // Use logger AND child loggers
+ logger.debug("Debug message 1");
+ loggerChild.debug("Debug message 1 child");
+ loggerGrandchild.debug("Debug message 1 grandchild");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger, Level.OFF);
+ logger.debug("Debug message 2");
+ loggerChild.debug("Debug message 2 child");
+ loggerGrandchild.debug("Debug message 2 grandchild");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger, Level.DEBUG);
+ logger.debug("Debug message 3");
+ loggerChild.debug("Debug message 3 child");
+ loggerGrandchild.debug("Debug message 3 grandchild");
+ assertEventCount(app.getEvents(), 6);
+ }
+
+ @Test
+ public void debugChangeLevelChildLogger_ForLoggerName() {
// Use logger AND child loggers
logger.debug("Debug message 1");
loggerChild.debug("Debug message 1 child");
@@ -193,7 +224,74 @@ public class LoggerTest {
}
@Test
- public void debugChangeLevelsChildLoggers(final LoggerContext context) {
+ public void debugChangeLevelName_ForLoggerName() {
+ logger.debug("Debug message 1");
+ assertEventCount(app.getEvents(), 1);
+ Configurator.setLevel(logger.getName(), Level.OFF.name());
+ logger.debug("Debug message 2");
+ assertEventCount(app.getEvents(), 1);
+ Configurator.setLevel(logger.getName(), Level.DEBUG.name());
+ logger.debug("Debug message 3");
+ assertEventCount(app.getEvents(), 2);
+ }
+
+ @Test
+ public void debugChangeLevelNameChildLogger_ForLoggerName() {
+ // Use logger AND child loggers
+ logger.debug("Debug message 1");
+ loggerChild.debug("Debug message 1 child");
+ loggerGrandchild.debug("Debug message 1 grandchild");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger.getName(), Level.OFF.name());
+ logger.debug("Debug message 2");
+ loggerChild.debug("Debug message 2 child");
+ loggerGrandchild.debug("Debug message 2 grandchild");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger.getName(), Level.DEBUG.name());
+ logger.debug("Debug message 3");
+ loggerChild.debug("Debug message 3 child");
+ loggerGrandchild.debug("Debug message 3 grandchild");
+ assertEventCount(app.getEvents(), 6);
+ }
+
+ @Test
+ public void debugChangeLevelNameChildLoggers_ForLoggerName(final LoggerContext context) {
+ final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child");
+ // Use logger AND loggerChild
+ logger.debug("Debug message 1");
+ loggerChild.debug("Debug message 1 child");
+ assertEventCount(app.getEvents(), 2);
+ Configurator.setLevel(logger.getName(), Level.ERROR.name());
+ Configurator.setLevel(loggerChild.getName(), Level.DEBUG.name());
+ logger.debug("Debug message 2");
+ loggerChild.debug("Debug message 2 child");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger.getName(), Level.DEBUG.name());
+ logger.debug("Debug message 3");
+ loggerChild.debug("Debug message 3 child");
+ assertEventCount(app.getEvents(), 5);
+ }
+
+ @Test
+ public void debugChangeLevelsChildLoggers_ForLogger(final LoggerContext context) {
+ final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child");
+ // Use logger AND loggerChild
+ logger.debug("Debug message 1");
+ loggerChild.debug("Debug message 1 child");
+ assertEventCount(app.getEvents(), 2);
+ Configurator.setLevel(logger, Level.ERROR);
+ Configurator.setLevel(loggerChild, Level.DEBUG);
+ logger.debug("Debug message 2");
+ loggerChild.debug("Debug message 2 child");
+ assertEventCount(app.getEvents(), 3);
+ Configurator.setLevel(logger, Level.DEBUG);
+ logger.debug("Debug message 3");
+ loggerChild.debug("Debug message 3 child");
+ assertEventCount(app.getEvents(), 5);
+ }
+
+ @Test
+ public void debugChangeLevelsChildLoggers_ForLoggerName(final LoggerContext context) {
final org.apache.logging.log4j.Logger loggerChild = context.getLogger(logger.getName() + ".child");
// Use logger AND loggerChild
logger.debug("Debug message 1");
[logging-log4j2] 04/13: Use classic toArray() trick.
Posted by gg...@apache.org.
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 2546cc1c684ef29350d34a94da6172a5d3e2dbb9
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:53:49 2022 -0500
Use classic toArray() trick.
---
log4j-api/src/main/java/org/apache/logging/log4j/Level.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
index 3897040..48d36d1 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/Level.java
@@ -74,6 +74,8 @@ import org.apache.logging.log4j.util.Strings;
*/
public final class Level implements Comparable<Level>, Serializable {
+ private static final Level[] EMPTY_ARRAY = {};
+
private static final ConcurrentMap<String, Level> LEVELS = new ConcurrentHashMap<>(); // SUPPRESS CHECKSTYLE
/**
@@ -316,7 +318,7 @@ public final class Level implements Comparable<Level>, Serializable {
* @return An array of Levels.
*/
public static Level[] values() {
- return Level.LEVELS.values().toArray(new Level[Level.LEVELS.values().size()]);
+ return Level.LEVELS.values().toArray(EMPTY_ARRAY);
}
/**
[logging-log4j2] 13/13: Merge branch 'release-2.x' of https://gitbox.apache.org/repos/asf/logging-log4j2 into release-2.x
Posted by gg...@apache.org.
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 718ff1f7b57accc09ca80ed6c0c8b1ce784b3670
Merge: bffff3c 56c0ec9
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 09:03:04 2022 -0500
Merge branch 'release-2.x' of https://gitbox.apache.org/repos/asf/logging-log4j2 into release-2.x
pom.xml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[logging-log4j2] 06/13: Use classic toArray() trick.
Posted by gg...@apache.org.
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 f4b44283801b5aadd7a55e10d088d784d06455d2
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 07:59:05 2022 -0500
Use classic toArray() trick.
---
log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
index 0e5e71a..37316c2 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/LoaderUtil.java
@@ -36,6 +36,8 @@ import java.util.Objects;
*/
public final class LoaderUtil {
+ private static final ClassLoader[] EMPTY_CLASS_LOADER_ARRAY = {};
+
/**
* System property to set to ignore the thread context ClassLoader.
*
@@ -115,7 +117,7 @@ public final class LoaderUtil {
if (systemClassLoader != null) {
classLoaders.add(systemClassLoader);
}
- return classLoaders.toArray(new ClassLoader[classLoaders.size()]);
+ return classLoaders.toArray(EMPTY_CLASS_LOADER_ARRAY);
}
/**
[logging-log4j2] 10/13: Reuse empty array constants.
Posted by gg...@apache.org.
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 01e8c4761ae61e1d3b52564a2433b600a688ba1a
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 09:00:47 2022 -0500
Reuse empty array constants.
Refactor empty array constants.
---
.../java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java | 3 +--
.../src/test/java/org/apache/logging/slf4j/LoggerContextTest.java | 2 +-
.../src/test/java/org/apache/logging/slf4j/LoggerContextTest.java | 2 +-
3 files changed, 3 insertions(+), 4 deletions(-)
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
index cc2f3ea..73f8f3d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
@@ -62,8 +62,7 @@ public class PatternParserTest2 {
final List<PatternConverter> converters = new ArrayList<>();
final List<FormattingInfo> fields = new ArrayList<>();
parser0.parse(pattern, converters, fields, false, false, convert);
- final FormattingInfo[] infoArray = new FormattingInfo[fields.size()];
- final FormattingInfo[] patternFields = fields.toArray(infoArray);
+ final FormattingInfo[] patternFields = fields.toArray(FormattingInfo.EMPTY_ARRAY);
final ArrayPatternConverter[] converterArray = new ArrayPatternConverter[converters.size()];
final ArrayPatternConverter[] patternConverters = converters.toArray(converterArray);
formatFileName(patternConverters, patternFields, buf, date, i);
diff --git a/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java b/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
index 742fc9b..103e5f8 100644
--- a/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
+++ b/log4j-slf4j-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
@@ -35,7 +35,7 @@ public class LoggerContextTest {
Log4jLoggerFactory factory = (Log4jLoggerFactory) StaticLoggerBinder.getSingleton().getLoggerFactory();
factory.getLogger("test");
Set<LoggerContext> set = factory.getLoggerContexts();
- LoggerContext ctx1 = set.toArray(new LoggerContext[0])[0];
+ LoggerContext ctx1 = set.toArray(LoggerContext.EMPTY_ARRAY)[0];
assertTrue("LoggerContext is not enabled for shutdown", ctx1 instanceof LifeCycle);
((LifeCycle) ctx1).stop();
set = factory.getLoggerContexts();
diff --git a/log4j-slf4j18-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java b/log4j-slf4j18-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
index 3c6403c..de37a36 100644
--- a/log4j-slf4j18-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
+++ b/log4j-slf4j18-impl/src/test/java/org/apache/logging/slf4j/LoggerContextTest.java
@@ -35,7 +35,7 @@ public class LoggerContextTest {
Log4jLoggerFactory factory = (Log4jLoggerFactory) LoggerFactory.getILoggerFactory();
factory.getLogger("test");
Set<LoggerContext> set = factory.getLoggerContexts();
- LoggerContext ctx1 = set.toArray(new LoggerContext[0])[0];
+ LoggerContext ctx1 = set.toArray(LoggerContext.EMPTY_ARRAY)[0];
assertTrue("LoggerContext is not enabled for shutdown", ctx1 instanceof LifeCycle);
((LifeCycle) ctx1).stop();
set = factory.getLoggerContexts();
[logging-log4j2] 12/13: Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
Posted by gg...@apache.org.
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 bffff3cfe798637e0f4fc731e6325e20c141d55f
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Wed Jan 19 09:02:56 2022 -0500
Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
---
src/changes/changes.xml | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 57f0b23..c2fe0e9 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -149,6 +149,9 @@
<action issue="LOG4J2-3343" type="add" dev="mattsicker">
Add ability to use exclusion pattern filter on Map Resolver keys.
</action>
+ <action type="add" dev="ggregory" due-to="Gary Gregory">
+ Add Configurator.setLevel(Logger, Level) and setLevel(String, String).
+ </action>
<!-- UPDATES -->
<action dev="ggregory" type="udpate" due-to="Dependabot">
Bump mongodb3.version from 3.12.4 to 3.12.10 #605.