これはハックを必要とすることが判明:
@SpringBootApplication
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(Application.class);
}
// In case of regular deployments, use WEB-INF/logback.xml
@Override
public void onStartup(final ServletContext servletContext) throws ServletException {
super.onStartup(servletContext);
configureLogging(servletContext);
LoggerFactory.getLogger(getClass()).info("Done configuring");
}
// manually configure logging
private void configureLogging(final ServletContext servletContext) {
try {
String realPath = servletContext.getRealPath("/WEB-INF/logback.xml");
LoggerContext context = (LoggerContext) LoggerFactory.getILoggerFactory();
JoranConfigurator configurator = new JoranConfigurator();
configurator.setContext(context);
context.reset();
configurator.doConfigure(realPath);
} catch (JoranException je) {
// StatusPrinter will handle this
}
}
public static void main(String[] args) throws Exception {
SpringApplication.run(Application.class, args);
}
}
はまた、私はsrc/main/resources
にlogback-spring.xmlを持っていた:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-include.xml" />
</configuration>
とlogback -include.xmlのsrc/main/resources
は、いくつかの共通の構成を持っていました。
<?xml version="1.0" encoding="UTF-8"?>
<included>
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<!-- put your loggers here -->
<logger name="org.springframework.web" additivity="false" level="INFO">
<appender-ref ref="CONSOLE"/>
</logger>
<!-- put your root here -->
<root level="INFO">
<appender-ref ref="CONSOLE"/>
</root>
</included>
そして、ちょうどlogback-spring.xmlのような一般的な設定をインポートsrc/main/webapp/WEB-INF
でようやく、logback.xml:ディレクトリであるwebapp/WEB-INF/
にコピーされたファイルにsrc/main/webapp/WEB-INF/
結果にlogback.xml
を置く
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<include resource="logback-include.xml" />
</configuration>
私はこの問題はSpring Bootとは関係ないと思いますが、 '/ WEB-INF'はクラスパス上になく、'/WEB-INF/classes'だけではありません。 Logbackはクラスパス上でxmlを見つけようとします。ファイルを 'classes'に移動できない場合は、/ WEB-INFをクラスパスに追加する方法を理解する必要があります。それを行うための簡単なアプリケーションサーバーの独立した方法があるかどうかは分かりません。 Googleの 'war custom classpath'と表示されます。 – Arthur
私はこの問題はSpring Bootとは関係がないと思いますが、 '/ WEB-INF'はクラスパス上になく、'/WEB-INF/classes'だけではありません。 Logbackはクラスパス上でxmlを見つけようとします。ファイルを 'classes'に移動できない場合は、/ WEB-INFをクラスパスに追加する方法を理解する必要があります。それを行うための簡単なアプリケーションサーバーの独立した方法があるかどうかは分かりません。 Googleの 'war custom classpath'と表示されます。 – Arthur