Skip to content

Commit eebcea1

Browse files
authored
Merge branch '2.x' into dependabot/maven/log4j-parent/2.x/xmlunit.version-2.10.2
2 parents c1b0225 + 78d4cb8 commit eebcea1

File tree

11 files changed

+76
-54
lines changed

11 files changed

+76
-54
lines changed

log4j-api/src/main/java/org/apache/logging/log4j/util/Base64Util.java

Lines changed: 3 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,8 @@
1616
*/
1717
package org.apache.logging.log4j.util;
1818

19-
import java.lang.reflect.Method;
2019
import java.nio.charset.Charset;
21-
import org.apache.logging.log4j.Logger;
22-
import org.apache.logging.log4j.LoggingException;
23-
import org.apache.logging.log4j.status.StatusLogger;
20+
import java.util.Base64;
2421

2522
/**
2623
* Base64 encodes Strings. This utility is only necessary because the mechanism to do this changed in Java 8 and
@@ -30,27 +27,7 @@
3027
*/
3128
public final class Base64Util {
3229

33-
private static final Logger LOGGER = StatusLogger.getLogger();
34-
35-
private static Method encodeMethod = null;
36-
private static Object encoder = null;
37-
38-
static {
39-
try {
40-
final Class<?> clazz = LoaderUtil.loadClass("java.util.Base64");
41-
final Class<?> encoderClazz = LoaderUtil.loadClass("java.util.Base64$Encoder");
42-
final Method method = clazz.getMethod("getEncoder");
43-
encoder = method.invoke(null);
44-
encodeMethod = encoderClazz.getMethod("encodeToString", byte[].class);
45-
} catch (Exception ex) {
46-
try {
47-
final Class<?> clazz = LoaderUtil.loadClass("javax.xml.bind.DataTypeConverter");
48-
encodeMethod = clazz.getMethod("printBase64Binary");
49-
} catch (Exception ex2) {
50-
LOGGER.error("Unable to create a Base64 Encoder", ex2);
51-
}
52-
}
53-
}
30+
private static final Base64.Encoder ENCODER = Base64.getEncoder();
5431

5532
private Base64Util() {}
5633

@@ -60,17 +37,6 @@ private Base64Util() {}
6037
*/
6138
@Deprecated
6239
public static String encode(final String str) {
63-
if (str == null) {
64-
return null;
65-
}
66-
final byte[] data = str.getBytes(Charset.defaultCharset());
67-
if (encodeMethod != null) {
68-
try {
69-
return (String) encodeMethod.invoke(encoder, data);
70-
} catch (Exception ex) {
71-
throw new LoggingException("Unable to encode String", ex);
72-
}
73-
}
74-
throw new LoggingException("No Encoder, unable to encode string");
40+
return str != null ? ENCODER.encodeToString(str.getBytes(Charset.defaultCharset())) : null;
7541
}
7642
}

log4j-core-test/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerConfigTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ void testSingleFilterInvocation() {
100100
.withLoggerName(FQCN)
101101
.withConfig(configuration)
102102
.withLevel(Level.INFO)
103-
.withFilter(filter)
103+
.setFilter(filter)
104104
.build();
105105
final Appender appender = mock(Appender.class);
106106
when(appender.isStarted()).thenReturn(true);

log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/CustomConfigurationTest.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,26 @@ void testConfig(final LoggerContext ctx) {
6363
.withConfiguration(config)
6464
.build();
6565
final FileAppender appender = FileAppender.newBuilder()
66-
.withFileName(logFile.toString())
67-
.withAppend(false)
68-
.setName("File")
66+
.setBufferedIo(false)
6967
.setIgnoreExceptions(false)
70-
.withBufferedIo(false)
68+
.setName("File")
7169
.setLayout(layout)
70+
.withAppend(false)
71+
.withFileName(logFile.toString())
7272
.build();
7373
appender.start();
7474
config.addAppender(appender);
7575
final AppenderRef ref = AppenderRef.createAppenderRef("File", null, null);
7676
final AppenderRef[] refs = new AppenderRef[] {ref};
7777

78-
final LoggerConfig loggerConfig = LoggerConfig.createLogger(
79-
false, Level.INFO, "org.apache.logging.log4j", "true", refs, null, config, null);
78+
final LoggerConfig loggerConfig = LoggerConfig.newBuilder()
79+
.withConfig(config)
80+
.withAdditivity(false)
81+
.withIncludeLocation("true")
82+
.withLevel(Level.INFO)
83+
.withLoggerName("org.apache.logging.log4j")
84+
.withRefs(refs)
85+
.build();
8086
loggerConfig.addAppender(appender, null, null);
8187
config.addLogger("org.apache.logging.log4j", loggerConfig);
8288
ctx.updateLoggers();

log4j-core-test/src/test/java/org/apache/logging/log4j/core/config/LoggerConfigTest.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -47,11 +47,16 @@ class LoggerConfigTest {
4747
private static final String FQCN = LoggerConfigTest.class.getName();
4848

4949
private static LoggerConfig createForProperties(final Property[] properties) {
50-
return LoggerConfig.createLogger(
51-
true, Level.INFO, "name", "false", new AppenderRef[0], properties, new NullConfiguration(), null);
50+
return LoggerConfig.newBuilder()
51+
.withConfig(new NullConfiguration())
52+
.withAdditivity(true)
53+
.withLevel(Level.INFO)
54+
.withLoggerName("name")
55+
.withIncludeLocation("false")
56+
.withProperties(properties)
57+
.build();
5258
}
5359

54-
@SuppressWarnings({"deprecation"})
5560
@Test
5661
void testPropertiesWithoutSubstitution() {
5762
assertNull(createForProperties(null).getPropertyList(), "null propertiesList");
@@ -129,7 +134,7 @@ void testSingleFilterInvocation() {
129134
.withLoggerName(FQCN)
130135
.withConfig(configuration)
131136
.withLevel(Level.INFO)
132-
.withFilter(filter)
137+
.setFilter(filter)
133138
.build();
134139
final Appender appender = mock(Appender.class);
135140
when(appender.isStarted()).thenReturn(true);

log4j-core/src/main/java/org/apache/logging/log4j/core/async/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* Provides Asynchronous Logger classes and interfaces for low-latency logging.
1919
*/
2020
@Export
21-
@Version("2.24.1")
21+
@Version("2.25.0")
2222
package org.apache.logging.log4j.core.async;
2323

2424
import org.osgi.annotation.bundle.Export;

log4j-core/src/main/java/org/apache/logging/log4j/core/config/LoggerConfig.java

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -213,15 +213,21 @@ public Filter getFilter() {
213213
}
214214

215215
/**
216-
* @deprecated Use {@link #withFilter(Filter)} instead
216+
* @deprecated Use {@link #setFilter(Filter)} instead
217217
*/
218218
@Deprecated
219219
public B withtFilter(final Filter filter) {
220-
this.filter = filter;
221-
return asBuilder();
220+
return setFilter(filter);
222221
}
223222

223+
/** @deprecated since 2.25.0. Use {@link #setFilter(Filter)} instead. */
224+
@Deprecated
224225
public B withFilter(final Filter filter) {
226+
return setFilter(filter);
227+
}
228+
229+
/** @since 2.25.0 */
230+
public B setFilter(final Filter filter) {
225231
this.filter = filter;
226232
return asBuilder();
227233
}
@@ -936,7 +942,16 @@ public Filter getFilter() {
936942
return filter;
937943
}
938944

945+
/**
946+
* @deprecated since 2.25.0. Use {@link #setFilter(Filter)} instead.
947+
*/
948+
@Deprecated
939949
public B withtFilter(final Filter filter) {
950+
return setFilter(filter);
951+
}
952+
953+
/** @since 2.25.0 */
954+
public B setFilter(final Filter filter) {
940955
this.filter = filter;
941956
return asBuilder();
942957
}

log4j-core/src/main/java/org/apache/logging/log4j/core/config/package-info.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
* Configuration of Log4j 2.
1919
*/
2020
@Export
21-
@Version("2.24.1")
21+
@Version("2.25.0")
2222
package org.apache.logging.log4j.core.config;
2323

2424
import org.osgi.annotation.bundle.Export;

log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/RegexReplacement.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public String toString() {
6565
* Create a RegexReplacement.
6666
* @param regex The regular expression to locate.
6767
* @param replacement The replacement value.
68-
* @return A RegexReplacement.
68+
* @return the new RegexReplacement instance or {@code null} if an input parameter was invalid
6969
*/
7070
@PluginFactory
7171
public static RegexReplacement createRegexReplacement(
@@ -76,6 +76,7 @@ public static RegexReplacement createRegexReplacement(
7676
}
7777
if (replacement == null) {
7878
LOGGER.error("A replacement string is required to perform replacement");
79+
return null;
7980
}
8081
// FIXME: should we use Matcher.quoteReplacement() here?
8182
return new RegexReplacement(regex, replacement);
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="https://logging.apache.org/xml/ns"
4+
xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
5+
type="fixed">
6+
<issue id="3215" link="https://github.com/apache/logging-log4j2/issues/3215"/>
7+
<description format="asciidoc">
8+
Properly handle null 'replacement' parameter in RegexReplacement#createRegexReplacement.
9+
</description>
10+
</entry>
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<entry xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3+
xmlns="https://logging.apache.org/xml/ns"
4+
xsi:schemaLocation="https://logging.apache.org/xml/ns https://logging.apache.org/xml/ns/log4j-changelog-0.xsd"
5+
type="added">
6+
<issue id="3369" link="https://github.com/apache/logging-log4j2/issues/3369"/>
7+
<description format="asciidoc">
8+
Fixed typo in "LoggerConfig.RootLogger.Builder#withtFilter(...)" method.
9+
Created new corrected 'withFilter()' method and deprecated old method.
10+
</description>
11+
</entry>

0 commit comments

Comments
 (0)