|
16 | 16 |
|
17 | 17 | package org.springframework.boot.logging.logback;
|
18 | 18 |
|
| 19 | +import java.lang.reflect.Method; |
19 | 20 | import java.nio.charset.Charset;
|
20 | 21 |
|
21 | 22 | import ch.qos.logback.classic.Level;
|
|
35 | 36 | import org.springframework.core.env.Environment;
|
36 | 37 | import org.springframework.core.env.PropertyResolver;
|
37 | 38 | import org.springframework.core.env.PropertySourcesPropertyResolver;
|
| 39 | +import org.springframework.util.ReflectionUtils; |
38 | 40 |
|
39 | 41 | /**
|
40 | 42 | * Default logback configuration used by Spring Boot. Uses {@link LogbackConfigurator} to
|
@@ -133,22 +135,36 @@ private Appender<ILoggingEvent> fileAppender(LogbackConfigurator config,
|
133 | 135 | encoder.setPattern(OptionHelper.substVars(logPattern, config.getContext()));
|
134 | 136 | appender.setEncoder(encoder);
|
135 | 137 | config.start(encoder);
|
136 |
| - |
137 | 138 | appender.setFile(logFile);
|
| 139 | + getRollingPolicy(appender, config, logFile); |
| 140 | + getMaxFileSize(appender, config); |
| 141 | + config.appender("FILE", appender); |
| 142 | + return appender; |
| 143 | + } |
138 | 144 |
|
| 145 | + private void getRollingPolicy(RollingFileAppender<ILoggingEvent> appender, |
| 146 | + LogbackConfigurator config, String logFile) { |
139 | 147 | FixedWindowRollingPolicy rollingPolicy = new FixedWindowRollingPolicy();
|
140 | 148 | rollingPolicy.setFileNamePattern(logFile + ".%i");
|
141 | 149 | appender.setRollingPolicy(rollingPolicy);
|
142 | 150 | rollingPolicy.setParent(appender);
|
143 | 151 | config.start(rollingPolicy);
|
| 152 | + } |
144 | 153 |
|
| 154 | + private void getMaxFileSize(RollingFileAppender<ILoggingEvent> appender, |
| 155 | + LogbackConfigurator config) { |
145 | 156 | 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 | + } |
147 | 166 | appender.setTriggeringPolicy(triggeringPolicy);
|
148 | 167 | config.start(triggeringPolicy);
|
149 |
| - |
150 |
| - config.appender("FILE", appender); |
151 |
| - return appender; |
152 | 168 | }
|
153 | 169 |
|
154 | 170 | }
|
0 commit comments