我有一个运行带有嵌入式tomcat的spring-boot应用程序。我们正在使用logback和slf4j进行记录。
我正在尝试通过Spring-boot应用程序生成catalina.out和localhost.log文件的方法。看起来catalina.out是由以独立模式启动tomcat容器的启动脚本生成的,而catalina.out文件不是在使用嵌入式tomcat的spring-boot应用程序中生成的。
localhost.log文件如何? localhost.log文件也一样吗?
我还如何通过spring-boot应用程序中的logback / slf4j绑定更改嵌入式tomcat的日志级别。
有什么建议吗?
答案 0 :(得分:0)
您必须像这样在Spring Boot中手动配置tomcat容器
您必须创建EmbeddedServletContainerFactory的bean并配置tomcat容器中的登录信息,以下是示例代码(我尚未对其进行测试,但可以运行)。
tomcat现在自动在类路径中搜索logback-access.xml文件,以配置日志记录
对于Spring引导版本<2.0.0
@SpringBootApplication
public class ABCApplication {
@Bean
public EmbeddedServletContainerFactory servletContainer() {
TomcatEmbeddedServletContainerFactory tomcat = new TomcatEmbeddedServletContainerFactory();
LogbackValve logbackValve = new LogbackValve();
logbackValve.setFilename("logback-access.xml");
tomcat.addContextValves(logbackValve);
return tomcat;
}
public static void main(String[] args) {
SpringApplication.run(ABCApplication.class, args);
}
}
EmbeddedServletContainerFactory被TomcatServletWebServerFactory替换为Spring Boot版本2.0.0,因此请使用必需的工厂来配置tomacat。
现在您可以像这样提供您的logback-access.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%h %l %u %t "%r" %s %b</pattern>
</encoder>
</appender>
<appender-ref ref="STDOUT" />
</configuration>
您可以将添加程序添加到xml,以记录tomcat登录文件。
您必须查看LogbackValve
您必须为LogbackValve添加以下依赖项
<dependency>
<groupId>net.rakugakibox.spring.boot</groupId>
<artifactId>logback-access-spring-boot-starter</artifactId>
</dependency>
希望这可能对jagamot有所帮助!
答案 1 :(得分:0)
要定义嵌入式Tomcat日志路径,请将这些行添加到application.properties
server.tomcat.accesslog.directory=logs # Directory in which log files are created. Can be absolute or relative to the Tomcat base dir.
server.tomcat.accesslog.enabled=false # Enable access log.
server.tomcat.accesslog.file-date-format=.yyyy-MM-dd # Date format to place in the log file name.
用于通过登录配置嵌入式tomcat的日志级别
使用此链接
https://dzone.com/articles/configuring-logback-with-spring-boot
答案 2 :(得分:0)
function showValidate(input) {
var thisAlert = $(input).parent();
$(thisAlert).addClass('alert-validate');
$(thisAlert).append('<span class="btn-hide-validate"></span>')
$('.btn-hide-validate').each(function(){
$(this).on('click',function(){
hideValidate(this);
});
});
}
function hideValidate(input) {
var thisAlert = $(input).parent();
$(thisAlert).removeClass('alert-validate');
$(thisAlert).find('.btn-hide-validate').remove();
}
。