在Apache Tomcat中运行的Spring Boot外部WAR没有日志

时间:2018-08-31 20:32:17

标签: spring spring-boot tomcat

我已经按照指南配置了Spring Boot与tomcat一起工作: https://www.baeldung.com/spring-boot-war-tomcat-deploy。当我从IDE运行应用程序时,我可以在控制台上看到所有内容,但是在tomcat上,日志没有显示任何内容,我还配置了以下内容:

logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

没有运气吗?

我的application.properites

# ===============================
# = DATA SOURCE
# ===============================
spring.datasource.url = jdbc:mysql://...
spring.datasource.username = root
spring.datasource.password = admin

# ===============================
# = JPA / HIBERNATE
# ===============================
spring.jpa.show-sql = true
spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

# ==============================================================
# = Spring Security / Queries for AuthenticationManagerBuilder
# ==============================================================
spring.queries.users-query=select email, password, active from user where email=?
spring.queries.roles-query=select u.email, r.role from user u inner join user_role ur on(u.id=ur.user_id) inner join role r on(ur.role_id=r.id) where u.email=?

logging.level.org.springframework.web=DEBUG
logging.level.org.hibernate=ERROR

5 个答案:

答案 0 :(得分:3)

在Spring Boot的application.properties

中添加以下内容
logging.file=../logs/mylog.log

答案 1 :(得分:1)

当您从IDE运行文件spring boot war并希望在IDE上显示日志控制台时。您必须编辑文件pom.xml:

首先。您必须排除spring-boot-starter-logging

     <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            **<exclusion>
               <groupId>org.springframework.boot</groupId>
               <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>**
        </exclusions>
    </dependency>

第二。您添加依赖项logback-classic和jcl-over-slf4j

   <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>jcl-over-slf4j</artifactId>
    </dependency>   

我成功了,我在IDE控制台上看到了日志。

答案 2 :(得分:1)

我遇到了同样的问题,所以我认为如果有人遇到同样的情况,我的回答会很有帮助。

创建springboot应用程序时,我们忘记在主类中扩展 SpringBootServletInitializer 。没有这个,就不会在您的应用程序和tomcat容器之间进行servlet上下文绑定。这就是为什么尽管战争爆发了,但实际上并未部署应用程序,因此没有应用程序日志。在这里https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/web/servlet/support/SpringBootServletInitializer.html

中查找更多详细信息
@EnableSwagger2
@SpringBootApplication
@EnableJpaRepositories("com.scn.scheduler.dal")
@EnableScheduling
public class SCNSchedulerApplication extends SpringBootServletInitializer {
    public static void main(String[] args) {
        SpringApplication.run(SCNSchedulerApplication.class, args);
    }
}

答案 3 :(得分:0)

在应用程序属性中使用以下答案是正确的:

logging.file=../logs/mylog.log

,但是没有提及为什么没有消息打印到catalina.log。完整的答案来自spring boot文档:

  

默认情况下,Spring Boot仅记录到控制台,不写   日志文件。如果要除控制台外还写日志文件   输出,您需要设置logging.file或logging.path属性(用于   例如,在您的application.properties中。)

答案 4 :(得分:0)

通过在application.properties中添加以下属性为我工作

logging.file.name = ${catalina.base}/logs/${service.name}.log