在Spring启动应用

时间:2018-05-07 12:12:43

标签: spring spring-boot logging

如何设置调试记录器级别以禁用写入控制台springframework和hibernate调试消息?

在我的app.yml中:

logging:
    file: direct_delivery.log
    level:
#        root: DEBUG
        springframework:
            web: INFO
        org:
            hibernate: INFO
    pattern:
        file: '%d{yyyy-MM-dd HH:mm:ss} - %msg%n'

当我为root logger app启用调试级别显示所有调试消息时,我只需要检查我的消息。

UPD 我的配置文件:

@Configuration
public class AppConfig {
    @Bean
    public Logger logger(){
        Logger log = LoggerFactory.getLogger("PlanningDirectDeliveryApplication");

        return log;
    }
}

3 个答案:

答案 0 :(得分:0)

将root logger设置为WARN级别,将包设置为Debug。 Hibernate也可以写入stdout,这种方式不具备杠杆作用,你需要另外一种解决方法。

答案 1 :(得分:0)

根据您的问题,我不清楚您想要记录什么以及什么不记录,但通常,您可以为应用程序代码中的每个包单独设置日志级别,包括代码和库的代码你用。

在上面的配置文件中,您要将springframework.web包的日志级别和org.hibernate包的日志级别设置为INFO。虽然Spring中不存在包springframework.web,但这可能无效。您可能应该使用org.springframework.web代替。

答案 2 :(得分:0)

org.hibernate - 基本上是一个记录器名称(通常是源类名称(通常是缩写的)。弹簧包名称是错误的,所以你不要使用具有这种名称的类。这就是原因您的记录器被忽略。org.springframework是Spring包的专有名称。

尝试设置日志记录,如:

logging:
    file: direct_delivery.log
    level:
        root: DEBUG
        org:
            hibernate: INFO
            springframework:
                web: INFO
    pattern:
        file: '%d{yyyy-MM-dd HH:mm:ss} - %msg%n'

或者

logging:
    file: direct_delivery.log
    level:
        root: DEBUG
        org.hibernate: INFO
        org.springframework.web: INFO
    pattern:
        file: '%d{yyyy-MM-dd HH:mm:ss} - %msg%n'

也许您甚至想要声明整个org.springframework,而不仅仅是webDEBUG级别。因为仅为web设置日志记录级别,您仍然会从具有不同类源的其他spring-web的{​​{1}}工件中获取日志,例如Loggers等。