SpringBoot 整合默认日志logback

1.  前言

  A. SpringBoot提供了对常用日志的支持,如:Log4J、Log4J2和Logback等,默认使用Logback;

  B.  Logback是Log4J框架的作者开发的新一代日志框架,这个效率更高;

  C.  日志元素内容

    时间间隔:yyyy-mm-dd HH:mm:ss.SSS

               日志级别:trace < debug < info < warn < error < fatal,如果设置为info,则低于info的信息都不会输出

    进程ID

    分隔符:---标识实际日志的开始

    线程名:方括号括起来

    Logger名:通常使用源代码的类名

    日志内容

2.  maven依赖

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

 注意:实际开发中不需要直接添加该依赖,因为spring-boot-starter中包含它

3.  application.properties方式

  A. 

  B.  默认情况下,日志文件的大小达到10MB时会切分一次,产生新的日志文件

4.  自定义日志方式

  A.  根据不同的日志框架,按照规则配置文件名,就能被正确加载,如Logback日志文件logback-spring.xml(官方推荐)或logback.xml,放在src/main/resources下

  B. logback-spring.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!-- configuration包含的三个属性都是默认值 -->
<configuration scan="true" scanPeriod="60 seconds" debug="false">
    <!-- contextName区分不同应用程序的记录 -->
    <contextName>default</contextName>
    <!-- 设置变量,定义的值会被插入到logger上下文中, ${}使用变量 -->
    <property name="log.path" value="/Users/tengjun/Documents/log" />
    <!--输出到控制台-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
       <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <!-- %d{HH:mm:ss.SSS}表示日志输出时间, %contextName表示上下文名称, %thread表示线程名, %-5level表示日志级别, 使用5个字符靠左对齐, %logger{36}日志输出者名字, %msg表示日志消息, %n表示换行符 -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!--输出到文件-->
    <appender name="file" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/logback.%d{yyyy-MM-dd}.log</fileNamePattern>
            <maxHistory>30</maxHistory>
            <totalSizeCap>1GB</totalSizeCap>
        </rollingPolicy>
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="info">
        <appender-ref ref="console" />
        <appender-ref ref="file" />
    </root>

    <!-- logback为java中的包 -->
    <logger name="com.dudu.controller"/>
    <!--logback.LogbackDemo:类的全路径 -->
    <logger name="com.dudu.controller.LearnController" level="WARN" additivity="false">
        <appender-ref ref="console"/>
    </logger>
    
    <!-- logback-spring.xml命名的文件才有 -->
    <!-- 测试环境+开发环境. 多个使用逗号隔开 -->
    <springProfile name="test,dev">
        <logger name="com.dudu.controller" level="info" />
    </springProfile>
    <!-- 生产环境. -->
    <springProfile name="prod">
        <logger name="com.dudu.controller" level="ERROR" />
    </springProfile>
    
</configuration>

可参考:http://tengj.top/2017/04/05/springboot7/

猜你喜欢

转载自www.cnblogs.com/ruhuanxingyun/p/13207425.html