美文网首页
spring-boot日志

spring-boot日志

作者: liangxifeng833 | 来源:发表于2018-01-22 20:27 被阅读25次

默认情况下,Spring Boot会用Logback来记录日志,并用INFO级别输出到控制台。并且默认spring Boot自动加载了Logback依赖,无需手动引用任何依赖.

日志级别优先级

  • TRACE < DEBUG < INFO < WARN < ERROR < FATAL

logBack的公共配置

  • 默认Spring Boot配置日志输出到控制台,并没有输出到日志文件
  • 我们可以手动修改application.yml配置文件,新增内容如下:
      logging:
        pattern:
           #日志格式化
          console: "%d - %msg%n"
        path: /var/log/spring
        file: /var/log/spring/lxf.log
        #针对固定包下信息规定日志级别
        level:
         com.example.readinglist: info
    
    注意:日志配置, path和file不能同时使用,如果要同时使用则logging.file生 效,logging.path失效

代码测试

  • HelloWorld.java
    package com.example.readinglist.controllers;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    @RestController
    public class HelloWorld {
      private final Logger logger =     LoggerFactory.getLogger(HelloWorld.class);
        @GetMapping(value = "/hello")
        public String testHello()
        {
            //日志级别从低到高分为TRACE < DEBUG < INFO < WARN <   ERROR < FATAL,如果设置为WARN,则低于WARN的信息都不会输出。
            logger.trace("日志输出 trace");
            logger.debug("日志输出 debug");
            logger.info("日志输出 info");
            logger.warn("日志输出 warn");
            logger.error("日志输出 error");
            return "hello world!";
        }
    }
    

自定义xml文件详细配置logBack

  • 自定义xml文件配置会覆盖掉application.yml中的logging相关配置
  • logback-spring.xml配置文件放在 src/main/resources 目录下,内容如下:
 <?xml version="1.0" encoding="UTF-8"?>
<configuration scan="true" scanPeriod="60 seconds" debug="false">

   <contextName>logback-demo</contextName>
   <!--<property name="logback.logdir" value="/home/lxf/test/logs"/>
   <property name="logback.appname" value="app"/>-->

   <!--application.yml 传递参数,不能使用logback 自带的<property>标签 -->
   <springProperty scope="context" name="logback.appname" source="logback.appname"/>
   <springProperty scope="context" name="logback.logdir" source="logback.logdir"/>

   <!--输出到控制台 自定义配置 ConsoleAppender-->
   <appender name="consoleLog1" class="ch.qos.logback.core.ConsoleAppender">
       <!--展示格式 layout-->
       <layout class="ch.qos.logback.classic.PatternLayout">
           <pattern>
               <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n</pattern>
           </pattern>
       </layout>
       <!--
       <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
       </filter>
        -->
   </appender>


   <!--输出到日志记录到文件,自定义配置,该配置会忽略application.yml中的日志配置logging相关失效 -->
   <appender name="fileInfoLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
       <!--如果只是想要 Info 级别的日志,只是过滤 info 还是会输出 Error 日志,因为 Error 的级别高,
       所以我们使用下面的策略,可以避免输出 Error 的日志-->

       <!--日志名称,如果没有File 属性,那么只会使用FileNamePattern的文件路径规则
           如果同时有<File>和<FileNamePattern>,那么当天日志是<File>,明天会自动把今天
           的日志改名为今天的日期。即,<File> 的日志都是当天的。
       -->
       <File>${logback.logdir}/info.${logback.appname}.log</File>
       <!--滚动策略,按照时间滚动 TimeBasedRollingPolicy-->
       <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
           <!--文件路径,定义了日志的切分方式——把每一天的日志归档到一个文件中,以防止日志填满整个磁盘空间-->
           <FileNamePattern>${logback.logdir}/info.${logback.appname}.%d{yyyy-MM-dd}.log</FileNamePattern>
           <!--只保留最近90天的日志-->
           <maxHistory>90</maxHistory>
           <!--用来指定日志文件的上限大小,那么到了这个值,就会删除旧的日志-->
           <!--<totalSizeCap>1GB</totalSizeCap>-->
       </rollingPolicy>
       <!--日志输出编码格式化-->
       <encoder>
           <charset>UTF-8</charset>
           <pattern>%d [%thread] %-5level %logger{36} %line - %msg%n</pattern>
       </encoder>
   </appender>

   <!--指定最基础的日志输出级别-->
   <root level="INFO">
       <!--appender将会添加到这个loger-->
       <appender-ref ref="consoleLog1"/>
       <!--<appender-ref ref="fileInfoLog"/>-->
   </root>

   <!-- 测试环境+开发环境. 多个使用逗号隔开. -->
   <springProfile name="test,dev">
       <logger name="com.example.readinglist" level="DEBUG" additivity="false">
           <!--引用控制台输出样式-->
           <appender-ref ref="consoleLog1"/>
           <!--引用文件输出样式-->
           <appender-ref ref="fileInfoLog"/>
       </logger>
   </springProfile>

   <!-- 生产环境. -->
   <springProfile name="prod">
       <logger name="com.example.readinglist" level="INFO" additivity="false">
           <appender-ref ref="consoleLog1"/>
           <appender-ref ref="fileInfoLog"/>
       </logger>
   </springProfile>

</configuration>
  • application.yml 配置文件内容
     spring:
       #引入开发环境,在logback-spring.xml中不同环境,记录不同日志级别信息
        profiles:
        active: dev
    #配置自定义日志变量信息,在logback-spring.xml中引用
    logback:
      #日志路径
      logdir: /home/lxf/test/logs
      #日志文件名
      appname: lxf-spring-log-test.log
    

参考文章: http://m.blog.csdn.net/inke88/article/details/75007649
slf4j+logback SLF4J和Logback日志框架详解
http://blog.csdn.net/qq_28893679/article/details/78327952
myslbatis输出sql语句配置

相关文章

网友评论

      本文标题:spring-boot日志

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