美文网首页
spring-boot整合日志功能(logback、log4j2

spring-boot整合日志功能(logback、log4j2

作者: 八目朱勇铭 | 来源:发表于2017-10-04 22:35 被阅读0次

    springboot为我们已经内置了log组件,随意启动一个最简单的springboot项目,就可以在控制台上看到该项目的日志信息。

    介绍springboot内置log组件

    springboot log

    我们可以通过ps -ef | grep springboot命令查看进程pid核验。

    Java 进程

    springboot为我们提供的日志功能的源码在spring-boot包的logging目录下

    springboot logging code

    修改日志级别

    我们可以在application.properties文件中修改springboot内置日志级别

    logging.level.root=debug
    

    springboot日志默认级别为info。拓展一下:日志级别从低到高为TRACE, DEBUG, INFO, WARN, ERROR, FATAL, OFF,级别越高,打印的日志越少。举例说明:说将日志级别设定为Debug,那么DEBUG, INFO, WARN, ERROR, FATAL, OFF这几类日志都会打印。

    application.properties文件中日志key的第三级的含义为"路径":

    • 填写root,能够指定整个项目(包含jdk源代码打印的日志)的日志级别;
    • 填写某个包名,能够指定该包下所有Java文件的日志级别,其余为被指定的Java文件的日志级别为默认级别:Info
    • 甚至可以指定任意Java文件,例如:
    logging.level.com.springboot.CodeController=debug
    

    它能够指定任一Java文件的日志级别,除该Java class以外,其余的Java类日志级别均为默认级别Info。读者可以自行试验一下!笔者已经试过,能够配置成功。

    几个日志配置项

    #指定日志文件目录、名字
    logging.file=/springboot/main.log
    #指定日志文件目录(默认日志名为spring.log)
    logging.path=/springboot
    #指定控制台输出日志的pattern
    logging.pattern.console=%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n
    #指定日志文件输出日志的pattern
    logging.file.console=%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n
    

    springboot项目中使用logback

    springboot项目默认支持logback,只需要在classpath下放入logback.xml/logback-spring.xml文件,即可定制日志输出。以下给出一个logback.xml文件样例

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <appender name="MainLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <file>/mw/log/sherlock/main.log</file>
            <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
                <Pattern>%d{yyyy-MM-dd HH:mm:ss} %-5level [%class{16} %line] - %msg%n</Pattern>
            </encoder>
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
                <FileNamePattern>/mw/log/sherlock/main.%d{yyyy-MM-dd}.%i.log.zip
                </FileNamePattern>
                <timeBasedFileNamingAndTriggeringPolicy
                        class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>500MB</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
                <maxHistory>7</maxHistory>
            </rollingPolicy>
        </appender>
        <root level="INFO">
            <appender-ref ref="MainLog"/>
        </root>
    </configuration>
    

    springboot项目中使用log4j2

    在本示例项目中,我们添加了spring-boot-starter依赖,其默认给我们添加了spring-boot-starter-logging依赖,此依赖中包含logback。读者可以同样顺藤摸瓜,看看是否真是如此。所以,springboot项目默认使用的是logback日志框架。如果想要使用log4j2框架,如要我们在spring-boot-starter依赖中将spring-boot-starter-logging排除,换成spring-boot-starter-log4j2。如下所示:

    <dependencies>
          <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-log4j2</artifactId>
          </dependency>
    </dependencies>
    

    此时,我们就完成了将日志框架从logback改为log4j2的第一步操作。接下来,我们需要使用log4j2.xml/log4j2-spring.xml文件,去替代我们刚才放置下classpath路径下的logback.xml文件。log4j2.xml如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
        <appenders>
            <Console name="console" target="SYSTEM_OUT" follow="true">
                <PatternLayout pattern="%-20(%d{yyyy-MM-dd HH:mm:ss.SSS} [Thread]) %-5level %logger{80} - %msg%n">
    
                </PatternLayout>
            </Console>
        </appenders>
    
        <loggers>
            <root lever="DEBUG">
                <appender-ref ref="console">
                    
                </appender-ref>
            </root>
        </loggers>
    </configuration>
    

    相关文章

      网友评论

          本文标题:spring-boot整合日志功能(logback、log4j2

          本文链接:https://www.haomeiwen.com/subject/kmkqyxtx.html