首页 文章

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

提问于
浏览
203

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

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

10 回答

  • 1

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

    例:

    logging.level.root=WARN
    
  • 1

    如果您使用的是Spring Boot,则可以直接 add following properties in application.properties file来设置日志记录级别,自定义日志记录模式以及将日志存储在外部文件中 .

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

    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"
    

    Please pass through this link to customize your log more vividly.

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

  • 9

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

  • 3

    Update: 从Spring Boot v1.2.0.RELEASE开始, application.propertiesapplication.yml 中的设置确实适用 . 请参阅参考指南的Log Levels section .

    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"/>
    
  • 234

    如果您想使用不同的日志框架,例如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 .
    那个's all, now you'都设置为在log4j配置文件中配置启动日志!

  • 32

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

    logging.level.=ERROR - >将根日志记录级别设置为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驱动器运行一小时;)) .

  • 86

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

    logging.level.com.company.myproject = DEBUG

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

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

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

  • 8

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

  • 4

    如果要设置更多详细信息,请添加日志配置文件名“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>
    
  • 10

    对于记录:official documentation,对于Spring Boot v1.2.0.RELEASE和Spring v4.1.3.RELEASE:

    如果您需要对日志记录进行的唯一更改是设置各种 Logger 的级别,那么您可以使用“logging.level”前缀在application.properties中执行此操作,例如: logging.level.org.springframework.web:DEBUG logging.level.org.hibernate:错误您还可以使用“logging.file”设置要登录的文件的位置(除控制台外) . 要配置日志记录系统的更细粒度设置,您需要使用相关LoggingSystem支持的本机配置格式 . 默认情况下,Spring Boot从系统的默认位置(例如,类路径:Logback的logback.xml)中选择本机配置,但您可以使用“logging.config”属性设置配置文件的位置 .

相关问题