Skip to content

Commit f36ed67

Browse files
committed
Make Logback 1.1.8 upgrade back compatible
Update the fix committed in a2d46dc to fallback to reflection based invocation in case earlier versions of Logback are being used. Closes gh-7638
1 parent 7824171 commit f36ed67

File tree

1 file changed

+21
-5
lines changed

1 file changed

+21
-5
lines changed

spring-boot/src/main/java/org/springframework/boot/logging/logback/DefaultLogbackConfiguration.java

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package org.springframework.boot.logging.logback;
1818

19+
import java.lang.reflect.Method;
1920
import java.nio.charset.Charset;
2021

2122
import ch.qos.logback.classic.Level;
@@ -35,6 +36,7 @@
3536
import org.springframework.core.env.Environment;
3637
import org.springframework.core.env.PropertyResolver;
3738
import org.springframework.core.env.PropertySourcesPropertyResolver;
39+
import org.springframework.util.ReflectionUtils;
3840

3941
/**
4042
* Default logback configuration used by Spring Boot. Uses {@link LogbackConfigurator} to
@@ -133,22 +135,36 @@ private Appender<ILoggingEvent> fileAppender(LogbackConfigurator config,
133135
encoder.setPattern(OptionHelper.substVars(logPattern, config.getContext()));
134136
appender.setEncoder(encoder);
135137
config.start(encoder);
136-
137138
appender.setFile(logFile);
139+
getRollingPolicy(appender, config, logFile);
140+
getMaxFileSize(appender, config);
141+
config.appender("FILE", appender);
142+
return appender;
143+
}
138144

145+
private void getRollingPolicy(RollingFileAppender<ILoggingEvent> appender,
146+
LogbackConfigurator config, String logFile) {
139147
FixedWindowRollingPolicy rollingPolicy = new FixedWindowRollingPolicy();
140148
rollingPolicy.setFileNamePattern(logFile + ".%i");
141149
appender.setRollingPolicy(rollingPolicy);
142150
rollingPolicy.setParent(appender);
143151
config.start(rollingPolicy);
152+
}
144153

154+
private void getMaxFileSize(RollingFileAppender<ILoggingEvent> appender,
155+
LogbackConfigurator config) {
145156
SizeBasedTriggeringPolicy<ILoggingEvent> triggeringPolicy = new SizeBasedTriggeringPolicy<ILoggingEvent>();
146-
triggeringPolicy.setMaxFileSize(FileSize.valueOf("10MB"));
157+
try {
158+
triggeringPolicy.setMaxFileSize(FileSize.valueOf("10MB"));
159+
}
160+
catch (NoSuchMethodError ex) {
161+
// Logback < 1.1.8 used String configuration
162+
Method method = ReflectionUtils.findMethod(SizeBasedTriggeringPolicy.class,
163+
"setMaxFileSize", String.class);
164+
ReflectionUtils.invokeMethod(method, triggeringPolicy, "10MB");
165+
}
147166
appender.setTriggeringPolicy(triggeringPolicy);
148167
config.start(triggeringPolicy);
149-
150-
config.appender("FILE", appender);
151-
return appender;
152168
}
153169

154170
}

0 commit comments

Comments
 (0)