有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java阻止Spring引导将日志打印到控制台

我正在为我的应用程序使用SpringBoot,并且使用默认的SpringBoot日志记录

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

        logging.file= ${logger_path}

而我的pom.xml包含

       <logger_path>/tmp/app.log</logger_path>

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

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


共 (5) 个答案

  1. # 1 楼答案

    使用最新的1.3.1版本进行测试,并使用较新的基本版本。xml已重命名为默认值。xml

    Answer here

  2. # 2 楼答案

    类似的讨论可以在here中找到

    我的日志。xml如下所示:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
      <include resource="org/springframework/boot/logging/logback/defaults.xml" />
      <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
    
      <root level="INFO">
        <appender-ref ref="FILE" />
      </root>
    </configuration>
    

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

  3. # 3 楼答案

    logback-spring.xml中使用以下配置包括file-appender.xml和不console-appender

    <?xml version="1.0" encoding="UTF-8"?>
        <configuration>
            <include resource="org/springframework/boot/logging/logback/defaults.xml" />
            <property name="LOG_FILE" value="${LOG_FILE:-${LOG_PATH:-${LOG_TEMP:-${java.io.tmpdir:-/tmp}}/}spring.log}"/>
            <include resource="org/springframework/boot/logging/logback/file-appender.xml" />
            <root level="INFO">
                <appender-ref ref="FILE" />
            </root>
        </configuration>
    

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

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

  4. # 4 楼答案

    Spring boot附带内置的logback记录器,默认情况下配置为打印到控制台

    您需要覆盖logback配置(在类路径上提供您自己的logback.xml)。 第66.1节对此进行了描述

    如何禁用回写日志读取here-

    如您所见,您必须提供值OFF。。。比如:

    <configuration>
      <include resource="base.xml" />
       .
       .
      <property name="root.level.console" value="OFF" />
    </configuration>
    

    注意:请记住,这里的一般想法是,来自spring boot的logback配置是最小的。其目的是您提供自己的回写配置,并完全覆盖现有的回写配置-例如,提供自己的回写配置,只配置日志文件附加器-这应该是您的常规方法

  5. # 5 楼答案

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

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