Spring Boot:如何使用application.properties设置日志记录级别?

logging spring-boot

328484 观看

12回复

3618 作者的声誉

这是一个非常简单的问题,但我找不到相关信息。
(也许我对Java框架的了解非常严重)

如何使用application.properties设置日志记录级别?
并记录文件位置等?

作者: zeodtr 的来源 发布者: 2013 年 12 月 10 日

回应 (12)


284

75090 作者的声誉

决定

更新:从Spring Boot v1.2.0.RELEASE开始,设置application.propertiesapplication.yml应用。请参阅参考指南的“ 日志级别”部分

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

对于早期版本的Spring Boot,你不能。您只需为日志框架(log4j,logback)使用正常配置即可。将适当的配置文件(log4j.xmllogback.xml)添加到src/main/resources目录并根据自己的喜好进行配置。

您可以通过指定--debug从命令行启动应用程序时启用调试日志记录。

Spring Boot为logback提供了一个很好的起点,可以配置一些默认值,着色等base.xml文件,您可以将其简单地包含在logback.xml文件中。(这也是Spring Boot中默认的logback.xml的推荐。

<include resource="org/springframework/boot/logging/logback/base.xml"/>     
作者: M. Deinum 发布者: 10.12.2013 07:14

10

974 作者的声誉

确保Dave Syer提示得到一些爱,因为添加debug=true到application.properties确实会启用调试日志记录。

作者: oravecz 发布者: 09.07.2014 11:51

93

1136 作者的声誉

您可以使用application.properties执行此操作。

logging.level.=ERROR- >将根日志记录级别设置为错误
...
logging.level.=DEBUG- >将根日志记录级别设置为DEBUG

logging.file=${java.io.tmpdir}/myapp.log- >将绝对日志文件路径设置为TMPDIR / myapp.log

关于使用配置文件进行日志记录的一组默认的application.properties将是: application.properties:

spring.application.name=<your app name here>
logging.level.=ERROR
logging.file=${java.io.tmpdir}/${spring.application.name}.log

application-dev.properties:

logging.level.=DEBUG
logging.file=

当您在自己喜欢的IDE内部开发时,只需-Dspring.profiles.active=dev在应用程序的运行/调试配置中添加一个VM参数即可。

这将使您在开发期间仅记录生产和调试日志记录时出错,而无需将输出写入日志文件。这将改善开发期间的性能(并节省SSD驱动器的运行时间;))。

作者: Richard 发布者: 02.08.2014 09:24

8

810 作者的声誉

如果您想使用不同的日志框架,例如log4j,我发现最简单的方法是禁用spring boots自己的日志记录并实现自己的日志记录。这样我就可以在一个文件中配置每个loglevel,log4j.xml(在我的例子中)就是这样。

要实现这一点,您只需将这些行添加到您的pom.xml:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

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

您可能已经拥有第一个依赖项,只需要另外两个。请注意,此示例仅涵盖log4j。
这就是全部,现在你已经准备好在log4j配置文件中配置启动日志!

作者: atripes 发布者: 05.12.2014 10:35

3

6717 作者的声誉

对于记录:官方文档,如Spring Boot v1.2.0.RELEASE和Spring v4.1.3.RELEASE:

如果您需要对日志记录进行的唯一更改是设置各种记录器的级别,那么您可以使用“logging.level”前缀在application.properties中执行此操作,例如

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

您还可以使用“logging.file”设置要登录的文件的位置(除控制台外)。

要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式。默认情况下,Spring Boot从系统的默认位置(例如,类路径:Logback的logback.xml)中选择本机配置,但您可以使用“logging.config”属性设置配置文件的位置。

作者: Eric Platon 发布者: 17.12.2014 12:29

14

1589 作者的声誉

假设您的应用程序包名为com.company.myproject。然后,您可以在application.properties文件中为项目内部的类设置日志记录级别

logging.level.com.company.myproject = DEBUG

logging.level.org.springframework.web = DEBUG并将logging.level.org.hibernate = DEBUG仅为Spring框架Web和Hibernate的类设置日志记录级别。

用于设置日志文件位置的使用

logging.file = /home/ubuntu/myproject.log

作者: shaunthomas999 发布者: 15.07.2016 05:28

1

11 作者的声誉

如果是eclipse IDE并且您的项目是maven,请记住清理并构建项目以反映更改。

作者: Sabarish Kumaran.V 发布者: 11.01.2017 10:06

1

105 作者的声誉

如果要设置更多详细信息,请添加日志配置文件名“logback.xml”或“logback-spring.xml”。

在您的application.properties文件中,输入如下:

logging.config: classpath:logback-spring.xml

在loback-spring.xml中,输入如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <include resource="org/springframework/boot/logging/logback/base.xml"/>

        <appender name="ROOT_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">

            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>INFO</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>sys.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">


                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/system.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <appender name="BUSINESS_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>TRACE</level>
                <onMatch>ACCEPT</onMatch>
                <onMismatch>DENY</onMismatch>
            </filter>

            <file>business.log</file>

            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">

                <fileNamePattern>${LOG_DIR}/${SYSTEM_NAME}/business.%d{yyyy-MM-dd}.%i.log</fileNamePattern>

                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>

            <encoder>
                <pattern>%-20(%d{yyy-MM-dd HH:mm:ss.SSS} [%X{requestId}]) %-5level - %logger{80} - %msg%n
                </pattern>
            </encoder>
        </appender>


        <logger name="{project-package-name}" level="TRACE">
            <appender-ref ref="BUSINESS_APPENDER" />
        </logger>

        <root level="INFO">
            <appender-ref ref="ROOT_APPENDER" />
        </root>

    </configuration>
作者: Sheldon Papa 发布者: 11.05.2017 06:06

47

5537 作者的声誉

设置日志记录级别的正确方法是使用该属性logging.level.root。请参阅自最初询问此问题以来已更新的文档

例:

logging.level.root=WARN
作者: The Gilbert Arenas Dagger 发布者: 16.05.2017 07:09

9

431 作者的声誉

如果您使用的是Spring Boot,则可以直接在application.properties文件中添加以下属性,以设置日志记录级别,自定义日志记录模式以及将日志存储在外部文件中。

这些是不同的日志记录级别及其从最小值<<最大值的顺序。

OFF << FATAL << ERROR << WARN << INFO << DEBUG << TRACE << ALL

# To set logs level as per your need.
logging.level.org.springframework = debug
logging.level.tech.hardik = trace

# To store logs to external file
# Here use strictly forward "/" slash for both Windows, Linux or any other os, otherwise, its won't work.      
logging.file=D:/spring_app_log_file.log

# To customize logging pattern.
logging.pattern.file= "%d{yyyy-MM-dd HH:mm:ss} - %msg%n"

请通过此链接更加生动地自定义您的日志。

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-logging.html

作者: Hardik Patel 发布者: 18.02.2018 05:16

0

51 作者的声誉

在spring boot项目中我们可以编写logging.level.root = WARN但是这里的问题是,我们必须重新启动,即使我们添加了devtools依赖项,如果我们被修改属性文件,任何值都不会自动检测,因为这个限制我才知道解决方案i,我们可以在pom.xml中添加执行器并传递记录器级别,如下面所示,邮箱客户端在url bar http:// localhost:8080 / loggers / ROOThttp:// localhost:8080 / loggers / 和在正文中你可以传递json格式,如下所示

{
  "configuredLevel":null
   effectiveLevel":"WARN"

}
作者: siddartha kamble 发布者: 06.05.2019 12:36

0

744 作者的声誉

现有答案很棒。我只想与您分享一个新的Spring启动功能,允许对整个组进行分组日志和设置日志记录级别。

从文档中提供:

  • 创建一个日志记录组
logging.group.tomcat=org.apache.catalina, org.apache.coyote, org.apache.tomcat
  • 设置组的日志记录级别
logging.level.tomcat=TRACE

这是一个很好的功能,带来更多的灵活性。

作者: Martin Choraine 发布者: 23.07.2019 07:45
32x32