Register Logback's pattern conversion rule using Suppliers
This commit makes use of a feature introduced in LogBack 1.5.15 that allows converter to be specified using a supplier rather than a fully qualified class name. Closes gh-43588
This commit is contained in:
parent
a2d038f2f5
commit
b84618fab9
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2019 the original author or authors.
|
||||
* Copyright 2012-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -16,6 +16,8 @@
|
|||
|
||||
package org.springframework.boot.logging.logback;
|
||||
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import ch.qos.logback.classic.Level;
|
||||
import ch.qos.logback.classic.LoggerContext;
|
||||
import ch.qos.logback.classic.spi.ILoggingEvent;
|
||||
|
|
@ -38,10 +40,10 @@ class DebugLogbackConfigurator extends LogbackConfigurator {
|
|||
}
|
||||
|
||||
@Override
|
||||
@SuppressWarnings("rawtypes")
|
||||
public void conversionRule(String conversionWord, Class<? extends Converter> converterClass) {
|
||||
<T extends Converter<?>> void conversionRule(String conversionWord, Class<T> converterClass,
|
||||
Supplier<T> converterSupplier) {
|
||||
info("Adding conversion rule of type '" + converterClass.getName() + "' for word '" + conversionWord + "'");
|
||||
super.conversionRule(conversionWord, converterClass);
|
||||
super.conversionRule(conversionWord, converterClass, converterSupplier);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
* Copyright 2012-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -99,11 +99,12 @@ class DefaultLogbackConfiguration {
|
|||
|
||||
private void defaults(LogbackConfigurator config) {
|
||||
deprecatedDefaults(config);
|
||||
config.conversionRule("clr", ColorConverter.class);
|
||||
config.conversionRule("correlationId", CorrelationIdConverter.class);
|
||||
config.conversionRule("esb", EnclosedInSquareBracketsConverter.class);
|
||||
config.conversionRule("wex", WhitespaceThrowableProxyConverter.class);
|
||||
config.conversionRule("wEx", ExtendedWhitespaceThrowableProxyConverter.class);
|
||||
config.conversionRule("clr", ColorConverter.class, ColorConverter::new);
|
||||
config.conversionRule("correlationId", CorrelationIdConverter.class, CorrelationIdConverter::new);
|
||||
config.conversionRule("esb", EnclosedInSquareBracketsConverter.class, EnclosedInSquareBracketsConverter::new);
|
||||
config.conversionRule("wex", WhitespaceThrowableProxyConverter.class, WhitespaceThrowableProxyConverter::new);
|
||||
config.conversionRule("wEx", ExtendedWhitespaceThrowableProxyConverter.class,
|
||||
ExtendedWhitespaceThrowableProxyConverter::new);
|
||||
putProperty(config, "CONSOLE_LOG_PATTERN", CONSOLE_LOG_PATTERN);
|
||||
putProperty(config, "CONSOLE_LOG_CHARSET", "${CONSOLE_LOG_CHARSET:-" + DEFAULT_CHARSET + "}");
|
||||
putProperty(config, "CONSOLE_LOG_THRESHOLD", "${CONSOLE_LOG_THRESHOLD:-TRACE}");
|
||||
|
|
@ -124,7 +125,7 @@ class DefaultLogbackConfiguration {
|
|||
|
||||
@SuppressWarnings("removal")
|
||||
private void deprecatedDefaults(LogbackConfigurator config) {
|
||||
config.conversionRule("applicationName", ApplicationNameConverter.class);
|
||||
config.conversionRule("applicationName", ApplicationNameConverter.class, ApplicationNameConverter::new);
|
||||
}
|
||||
|
||||
void putProperty(LogbackConfigurator config, String name, String val) {
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2012-2024 the original author or authors.
|
||||
* Copyright 2012-2025 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
|
@ -19,6 +19,7 @@ package org.springframework.boot.logging.logback;
|
|||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.locks.ReentrantLock;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
import ch.qos.logback.classic.Level;
|
||||
import ch.qos.logback.classic.Logger;
|
||||
|
|
@ -54,17 +55,18 @@ class LogbackConfigurator {
|
|||
return this.context.getConfigurationLock();
|
||||
}
|
||||
|
||||
@SuppressWarnings({ "rawtypes", "unchecked" })
|
||||
void conversionRule(String conversionWord, Class<? extends Converter> converterClass) {
|
||||
@SuppressWarnings("unchecked")
|
||||
<T extends Converter<?>> void conversionRule(String conversionWord, Class<T> converterClass,
|
||||
Supplier<T> converterSupplier) {
|
||||
Assert.hasLength(conversionWord, "Conversion word must not be empty");
|
||||
Assert.notNull(converterClass, "Converter class must not be null");
|
||||
Map<String, String> registry = (Map<String, String>) this.context
|
||||
.getObject(CoreConstants.PATTERN_RULE_REGISTRY);
|
||||
Assert.notNull(converterSupplier, "Converter supplier must not be null");
|
||||
Map<String, Supplier<?>> registry = (Map<String, Supplier<?>>) this.context
|
||||
.getObject(CoreConstants.PATTERN_RULE_REGISTRY_FOR_SUPPLIERS);
|
||||
if (registry == null) {
|
||||
registry = new HashMap<>();
|
||||
this.context.putObject(CoreConstants.PATTERN_RULE_REGISTRY, registry);
|
||||
this.context.putObject(CoreConstants.PATTERN_RULE_REGISTRY_FOR_SUPPLIERS, registry);
|
||||
}
|
||||
registry.put(conversionWord, converterClass.getName());
|
||||
registry.put(conversionWord, converterSupplier);
|
||||
}
|
||||
|
||||
void appender(String name, Appender<?> appender) {
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ Default logback configuration provided for import
|
|||
<conversionRule conversionWord="applicationName" class="org.springframework.boot.logging.logback.ApplicationNameConverter"/>
|
||||
<conversionRule conversionWord="clr" class="org.springframework.boot.logging.logback.ColorConverter"/>
|
||||
<conversionRule conversionWord="correlationId" class="org.springframework.boot.logging.logback.CorrelationIdConverter"/>
|
||||
<conversionRule conversionWord="esb" class="org.springframework.boot.logging.logback.EnclosedInSquareBracketsConverter" />
|
||||
<conversionRule conversionWord="esb" class="org.springframework.boot.logging.logback.EnclosedInSquareBracketsConverter" />
|
||||
<conversionRule conversionWord="wex" class="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter" />
|
||||
<conversionRule conversionWord="wEx" class="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter" />
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue