防止Spring Boot将日志打印到控制台

我正在为我的应用程序使用spring boot,我正在使用默认的spring boot logging。

在我的application.properties ,我添加了logging.file文件路径,

  logging.file= ${logger_path} 

我的pom.xml包含

  /tmp/app.log 

当我启动应用程序时,它会将日志消息打印到/tmp/app.log的文件,但问题是它还会在控制台上打印日志消息。 当我指定了一个log file时,我真的不明白为什么它在控制台上打印( 虽然它将它们打印到指定的文件 )。

是否有任何配置可以防止spring boot将日志消息打印到控制台?

Spring启动时带有内置的logback logger,它被配置为默认打印到控制台。

您需要覆盖logback配置(在类路径上提供您自己的logback.xml )。 这在这里描述 – – 第66.1节

如何禁用此处的 logback日志记录 –

正如你所看到的,你必须提供OFF值…类似于:

   . .   

注意:请记住,这里的一般想法是来自spring-boot的logback配置是最小的。 目的是您提供自己的logback配置并完全覆盖现有配置 – 例如,提供您自己的logback配置,只配置了log file-appender – 这应该是您的一般方法。

logback-spring.xml包含file-appender.xml而不是console-appender以及以下配置:

          

您还需要将logging.file添加到application.properties

这符合Spring启动文档中提到的内容 – http://docs.spring.io/spring-boot/docs/current/reference/html/howto-logging.html

我尝试从logback.xml中删除控制台配置。 但是,它仍然在登录控制台。 所以我做的是,我刚刚删除了springboot在日志记录配置中添加的appender。 因此,我们可以在控制台和单独的日志文件中停止springboot日志记录。 在应用程序末尾添加以下行,添加特定的appender。 您的自定义appender不应与任何这些appender名称匹配。 它对我有用。

 // get instance of your log4j instance Logger logger = LogManager.getRootLogger(); logger.removeAppender("CONSOLE"); // stops console logging logger.removeAppender("LOGFILE"); // stops file logging 

在这里可以找到类似的讨论。

我的logback.xml看起来像这样:

         

以防你仍然遇到问题:我已经阅读了很多关于该主题的讨论,但对我来说根本不起作用。 不幸的是,当我第一次创建文件logback.xml时,我犯了一个非常愚蠢的错误:在文件名的开头添加了一个空格。 因此从未使用过该文件。 所以只需再看一下文件名,在“src / main / resources”中添加文件,并从属性文件中删除任何“logging.config”条目。

使用最新的1.3.1版本进行测试,使用较新的版本base.xml已重命名为defaults.xml

这里回答