防止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
这里回答