亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

springboot如何使用logback-spring配置日志格式,并分環(huán)境配置

 更新時(shí)間:2021年07月14日 15:48:59   作者:侯賽雷  
這篇文章主要介紹了springboot如何使用logback-spring配置日志格式,并分環(huán)境配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

配置不生效的解決辦法

注意:如果配置不生效,則說(shuō)明spring優(yōu)先加載了其他配置:

解決辦法:

  1. 添加啟動(dòng)參數(shù) -Dlogging.config=classpath:logback-spring.xml
  2. 修改名字為 logback.xml, SpringBoot首先去查找標(biāo)準(zhǔn)的日志配置文件,如果找不到在去找拼接Spring的配置的文件, 標(biāo)準(zhǔn)文件名: "logback-test.groovy", "logback-test.xml", "logback.groovy","logback.xml" 等
  3. 排除 第三方j(luò)ar包中的日志配置

springboot中使用這個(gè)LoggingApplicationListener類進(jìn)行初始化,具體流程可查源碼

logback-spring結(jié)尾的可以使用springboot的分環(huán)境注入特性:

直接貼代碼,放到resource下面就行了:

<?xml version="1.0" encoding="UTF-8"?>
<configuration debug="false">
    <!-- logback-spring 的文件可以基于環(huán)境配置,相對(duì)路徑會(huì)默認(rèn)成項(xiàng)目根目錄開(kāi)始 -->
    <springProfile name="comp">
        <property name="LOG_HOME" value="/home/houzheng/logs"/>
    </springProfile>
    <!-- home環(huán)境,windows -->
    <springProfile name="home">
        <property name="LOG_HOME" value="D:/logs"/>
    </springProfile>
    <!--控制臺(tái)輸出appender-->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <!--設(shè)置輸出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <!--設(shè)置編碼-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--文件輸出,時(shí)間窗口滾動(dòng)-->
    <appender name="timeFileOutput" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!--日志名,指定最新的文件名,其他文件名使用FileNamePattern -->
        <File>${LOG_HOME}/timeFile/out.log</File>
        <!--文件滾動(dòng)模式-->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <!--日志文件輸出的文件名,可設(shè)置文件類型為gz,開(kāi)啟文件壓縮-->
            <FileNamePattern>${LOG_HOME}/timeFile/info.%d{yyyy-MM-dd}.%i.log</FileNamePattern>
            <!--日志文件保留天數(shù)-->
            <MaxHistory>30</MaxHistory>
            <!--按大小分割同一天的-->
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <maxFileSize>10MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
        <!--輸出格式-->
        <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
            <!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級(jí)別從左顯示5個(gè)字符寬度%msg:日志消息,%n是換行符-->
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} [%thread] %-5level %logger{50} - %msg%n</pattern>
            <!--設(shè)置編碼-->
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    <!--指定基礎(chǔ)的日志輸出級(jí)別-->
    <root level="INFO">
        <!--appender將會(huì)添加到這個(gè)loger-->
        <appender-ref ref="console"/>
        <appender-ref ref="timeFileOutput"/>
    </root>
    <!-- 單獨(dú)指定某個(gè)包的日志打印,級(jí)別,appender等   -->
    <!-- addtivity: 可選。是否向上級(jí) loger(也就是 root 節(jié)點(diǎn))傳遞打印信息。默認(rèn)為 true,
        設(shè)置addtivity是因?yàn)檫@里已經(jīng)指定了appender,如果再向上傳遞就會(huì)被root下的appender再次打印 -->
<!--    <logger name="com.hou.postgresql.user.service.impl.TestUserServiceImpl" level="WARN" addtivity="false">-->
<!--        <appender-ref ref="console"/>-->
<!--    </logger>-->
     <!-- 單獨(dú)指定某個(gè)包的日志打印,級(jí)別,appender等,也可以在代碼中使用 name屬性獲取 LoggerFactory.getLogger("LogName");   -->
     <logger name="AudiLogNameFormat" level="info" additivity="false">
        <appender-ref ref="Log"/>
    </logger>
</configuration>

Springboot項(xiàng)目下的logback.xml

直接上模板,其中有注釋,在現(xiàn)有的項(xiàng)目里拷出來(lái)的。

<configuration>
    <!-- %m輸出的信息,%p日志級(jí)別,%t線程名,%d日期,%c類的全名,,,, -->
    
    <!-- 定義一個(gè)控制臺(tái)輸出的appender -->
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d %p (%file:%line\)- %m%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>
    
    <!-- 定義一個(gè)變量 下面可以引用 -->
    <property name="LOG_HOME" value="/log" />
	<!-- 定義一個(gè)sql語(yǔ)句的日志文件存放位置 格式 規(guī)則 等信息 -->
    <appender name="mysqllog"
              class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件路徑 與項(xiàng)目同級(jí) -->
        <File>${LOG_HOME}/mysql.log</File>
        <!-- 日志內(nèi)容規(guī)則 編碼方式 -->
        <encoder>
            <pattern>
                %d %p (%file:%line\)- %m%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 設(shè)置日志的分文件規(guī)則 以及命名 個(gè)人理解默認(rèn)按天來(lái)分 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/mysql.log.%d.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 設(shè)置日志文件最大size -->
                <maxFileSize>64 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
	<!-- 定義一個(gè)error的日志文件存放位置 格式 規(guī)則 等信息 -->
    <appender name="errorlog"
             class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 日志文件路徑 與項(xiàng)目同級(jí) -->
        <File>${LOG_HOME}/mysql.log</File>
        <!-- 日志內(nèi)容規(guī)則 編碼方式 -->
        <encoder>
            <pattern>
                %d %p (%file:%line\)- %m%n
            </pattern>
            <charset>UTF-8</charset>
        </encoder>
        <!-- 設(shè)置日志的分文件規(guī)則 以及命名 個(gè)人理解默認(rèn)按天來(lái)分 -->
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${LOG_HOME}/mysql.log.%d.%i</fileNamePattern>
            <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                <!-- 設(shè)置日志文件最大size -->
                <maxFileSize>64 MB</maxFileSize>
            </timeBasedFileNamingAndTriggeringPolicy>
        </rollingPolicy>
    </appender>
	<!-- 設(shè)置root全局日志的控制臺(tái) 使用上面第一個(gè)定義的'STDOUT' -->
    <root level="INFO">
        <appender-ref ref="STDOUT"/>
    </root>
	<!-- 設(shè)置mapper相應(yīng)目錄下的sql語(yǔ)句的輸出 使用了定義的'mysqllog'和'STDOUT' 其中'mysqllog'是輸出到文件中 'STDOUT'是控制臺(tái) 
	additivity是否追加到root中 默認(rèn)true 如果為true則會(huì)在debug時(shí)打印兩條sql 所以這里為false -->
    <logger name="com.xxx.mapper" level="DEBUG" additivity="false">
        <appender-ref ref="mysqllog" />
        <appender-ref ref="STDOUT" />
    </logger>
    <logger name="com.mytian.service" level="WARN">
    </logger>
</configuration>

在項(xiàng)目中使用時(shí):

Logger logger = LoggerFactory.getLogger(所在類名.class);

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mapstruct的用法之qualifiedByName示例詳解

    mapstruct的用法之qualifiedByName示例詳解

    qualifiedByName的意思就是使用這個(gè)Mapper接口中的指定的默認(rèn)方法去處理這個(gè)屬性的轉(zhuǎn)換,而不是簡(jiǎn)單的get?set,今天通過(guò)本文給大家介紹下mapstruct的用法之qualifiedByName示例詳解,感興趣的朋友一起看看吧
    2022-04-04
  • SpringBoot@Aspect 打印訪問(wèn)請(qǐng)求和返回?cái)?shù)據(jù)方式

    SpringBoot@Aspect 打印訪問(wèn)請(qǐng)求和返回?cái)?shù)據(jù)方式

    這篇文章主要介紹了SpringBoot@Aspect 打印訪問(wèn)請(qǐng)求和返回?cái)?shù)據(jù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例

    這篇文章主要介紹了Springboot啟用多個(gè)監(jiān)聽(tīng)端口代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案

    SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案

    在Spring Cloud 中微服務(wù)之間的調(diào)用會(huì)用到Feign,但是在默認(rèn)情況下,Feign 調(diào)用遠(yuǎn)程服務(wù)存在Header請(qǐng)求頭丟失問(wèn)題,下面給大家分享SpringCloud微服務(wù)調(diào)用丟失請(qǐng)求頭的問(wèn)題及解決方案,感興趣的朋友一起看看吧
    2024-02-02
  • 走進(jìn)SpringBoot之配置文件與多環(huán)境詳解

    走進(jìn)SpringBoot之配置文件與多環(huán)境詳解

    這篇文章主要介紹了走進(jìn)SpringBoot之配置文件與多環(huán)境,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-05-05
  • 在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql

    在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql

    這篇文章主要介紹了在Mybatis @Select注解中實(shí)現(xiàn)拼寫(xiě)動(dòng)態(tài)sql,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-11-11
  • JDK生成WebService客戶端代碼以及調(diào)用方式

    JDK生成WebService客戶端代碼以及調(diào)用方式

    WebService 是一種跨編程語(yǔ)言和跨操作系統(tǒng)平臺(tái)的遠(yuǎn)程調(diào)用技術(shù),下面這篇文章主要給大家介紹了關(guān)于JDK生成WebService客戶端代碼以及調(diào)用方式的相關(guān)資料,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-08-08
  • Mybatis一對(duì)多和多對(duì)一處理的深入講解

    Mybatis一對(duì)多和多對(duì)一處理的深入講解

    Mybatis可以通過(guò)關(guān)聯(lián)查詢實(shí)現(xiàn),關(guān)聯(lián)查詢是幾個(gè)表聯(lián)合查詢,只查詢一次,通過(guò)在resultMap里面的association,collection節(jié)點(diǎn)配置一對(duì)一,一對(duì)多的類就可以完成,這篇文章主要給大家介紹了關(guān)于Mybatis一對(duì)多和多對(duì)一處理的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 淺析Java中的set集合類型及其接口的用法

    淺析Java中的set集合類型及其接口的用法

    Java本身對(duì)set集合提供了一個(gè)接口,一般的實(shí)現(xiàn)類是HastSet和 TreeSet,這里我們先來(lái)簡(jiǎn)要淺析Java中的set集合類型及其接口的用法:
    2016-05-05
  • IntelliJ IDEA 安裝及初次使用圖文教程(2020.3.2社區(qū)版)

    IntelliJ IDEA 安裝及初次使用圖文教程(2020.3.2社區(qū)版)

    這篇文章主要介紹了IntelliJ IDEA 安裝及初次使用(2020.3.2社區(qū)版),本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03

最新評(píng)論