SpringBoot中的日誌配置,多環境日誌配置

爲何用Logback,這個建議你們上網搜一下,用log4j的建議更換了,此處的其實用的是sl4j日誌,Logback只是他的實現,Logback性能比log4j高不少。web

#Logback配置 SpringBoot自己就集成了日誌記錄組件,因此這節就沒有日誌依賴了。原本是要寫Druid集成及監控的,忽然發現前面沒有寫日誌,就這樣補上去。spring

#第一種方式,配置文件配置 SpringBoot默認就配置了配置文件,簡單監控及日誌輸出配置也很簡單,增長以下的配置就能夠了,file指定日誌記錄地址及名稱,level是監控級別,不是很重要的項目這樣子就OK了。這寫法沒法顯示sql,若是用jpa有單獨配置能夠顯示,mybatis不能顯示(企業級項目博主不推薦這寫法)sql

logging:
  file: ./application.log
  level: debug

#第二種方式,logback配置(推薦) SpringBoot官方介紹,能夠在resource下建立一個logback.xml文件,程序會自動加載,同時官方建議這個xml命名爲logback-spring.xml。apache

當logback-spring.xml與配置文件中配置同時存在的時候,以.xml配置爲準,配置文件無效。配置內容以下代碼,博主寫前logback的版本1.1.7,這個版本有個小bug在1.1.8才能修復,配置文件中寫。tomcat

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <logger name="org.springframework.web" level="INFO" />
	<!--定義日誌文件的存儲地址 勿在 LogBack 的配置中使用相對路徑-->  
    <property name="LOG_PATH" value="D://" />  
	<!-- 控制檯輸出 -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %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}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日誌文件保留天數-->
            <maxHistory>15</maxHistory>
            <!-- 當前版本bug,須要1.1.8才修復 -->
            <totalSizeCap>30GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日誌文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>
	<!-- 異步記錄文件 -->
    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>500</queueSize>
        <appender-ref ref="FILE" />
    </appender>

    <root level="INFO">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="asyncFileAppender" />
    </root>
    <!-- 打印sql -->
    <logger name="com.dengzy.kuj.mybatis.dao" level="DEBUG"></logger>
</configuration>

#多環境下的logback.xml配置 衆所周知,SpringBoot能夠在不一樣的配置環境下使用不一樣的配置文件,好比,你有application.yml,application-dev.yml,application-junit.yml,application-pro.yml,分別是公共配置,開發環境配置,單元測試環境配置,生產環境配置,切換環境只須要在application.yml中激活那個配置文件 ,以下mybatis

spring:
  profiles:
    active: dev #切換不一樣環境的配置信息
  output:
    ansi:
      enabled: detect #多彩輸出日誌,若是你的編輯器支持的話
  datasource:
    url: jdbc:mysxxxxx
	username: xxx
	。。。。

在切換不一樣配置文件下咱們須要使用不一樣的日誌記錄,好比開發的只須要打印控制檯,生產的寫文件和控制檯,單元測試之寫文件等等策略,那上面的配置文件就須要改一下,以下app

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/defaults.xml" />
    <logger name="org.springframework.web" level="INFO" />
    <appender name="consoleAppender" class="ch.qos.logback.core.ConsoleAppender">
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度%msg:日誌消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %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}/TestWeb.log.%d{yyyy-MM-dd}.log</FileNamePattern>
            <!--日誌文件保留天數-->
            <maxHistory>15</maxHistory>
            <!-- 當前版本bug,須要1.1.8才修復 -->
            <totalSizeCap>30GB</totalSizeCap>
        </rollingPolicy>
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
        </encoder>
        <!--日誌文件最大的大小-->
        <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy">
            <MaxFileSize>10MB</MaxFileSize>
        </triggeringPolicy>
    </appender>

    <appender name="asyncFileAppender" class="ch.qos.logback.classic.AsyncAppender">
        <discardingThreshold>0</discardingThreshold>
        <queueSize>500</queueSize>
        <appender-ref ref="FILE" />
    </appender>
    <springProfile name="dev">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
        </root>
    </springProfile>
    <springProfile name="junit">
        <root level="INFO">
            <appender-ref ref="consoleAppender" />
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>
    <springProfile name="test">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>
    <springProfile name="pro">
        <root level="INFO">
            <appender-ref ref="asyncFileAppender" />
        </root>
    </springProfile>
    <!--<root level="INFO">
        <appender-ref ref="STDOUT" />
    <appender-ref ref="asyncFileAppender" />
</root>-->
    <!-- 打印sql -->
    <logger name="com.dengzy.kuj.mybatis.dao" level="DEBUG"></logger>
</configuration>

好了,至此配文件配置完畢。異步

2017-01-10 17:57:07.794 [http-nio-8080-exec-1] INFO  com.dengzy.kuj.mybatis.controller.UserCtrl - 日誌測試啦啦啦
2017-01-10 17:57:08.090 [http-nio-8080-exec-1] WARN  org.apache.tomcat.jdbc.pool.ConnectionPool - maxIdle is larger than maxActive, setting maxIdle to: 20
2017-01-10 17:57:09.125 [http-nio-8080-exec-1] DEBUG c.d.kuj.mybatis.dao.UserMapper.queryUserInfoByName - ==>  Preparing: select * from user WHERE name = ? 
2017-01-10 17:57:09.231 [http-nio-8080-exec-1] DEBUG c.d.kuj.mybatis.dao.UserMapper.queryUserInfoByName - ==> Parameters: user(String)
2017-01-10 17:57:09.432 [http-nio-8080-exec-1] DEBUG c.d.kuj.mybatis.dao.UserMapper.queryUserInfoByName - <==      Total: 4
相關文章
相關標籤/搜索