91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java接口測試中日志框架Logback該怎樣使用

發布時間:2022-01-24 09:21:45 來源:億速云 閱讀:127 作者:kk 欄目:開發技術

這篇文章主要為大家分析了Java接口測試中日志框架Logback該怎樣使用的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“Java接口測試中日志框架Logback該怎樣使用”的知識吧。

    一、引言

    對于一個成熟的接口測試框架,日志管理這個是必不可少的。在開發和調試階段,日志可以幫助我們更快的定位問題;而在測試的運維過程中,日志系統又可以幫助我們記錄大部分的異常信息,通

    二、前言

    Spring Boot 在所有內部日志中使用Commons Logging,但是默認配置也提供了對常用日志的支持,如:Java Util Logging,Log4J, Log4J2和Logback。每種 Logger 都可以通過配置使用控制臺或者文件輸出日志內容。

    三、LogBack、Slf4j和Log4j之間的關系

    Slf4j是The Simple Logging Facade for Java的簡稱,是一個簡單日志門面抽象框架,它本身只提供了日志Facade API和一個簡單的日志類實現,一般常配合Log4j,LogBack,java.util.logging使用。Slf4j作為應用層的Log接入時,程序可以根據實際應用場景動態調整底層的日志實現框架(Log4j/LogBack/JdkLog…)。

    LogBack和Log4j都是開源日記工具庫,LogBack 是 Log4j 的改良版本,比 Log4j 擁有更多的特性,同時也帶來很大性能提升,同時天然支持SLF4J。

    LogBack 官方建議配合 Slf4j 使用,這樣可以靈活地替換底層日志框架。

    TIPS:為了優化log4j,以及更大性能的提升,Apache基金會已經著手開發了log4j 2.0, 其中也借鑒和吸收了logback的一些先進特性。

    四、默認日志Logback

    默認情況下,Spring Boot 會用 Logback 來記錄日志,并用 INFO 級別輸出到控制臺。在運行應用程序和其他例子時,你應該已經看到很多INFO級別的日志了。

    Java接口測試中日志框架Logback該怎樣使用

    從上圖可以看到,日志輸出內容元素具體如下:

    • 時間日期:精確到毫秒

    • 日志級別:ERROR, WARN, INFO, DEBUG or TRACE

    • Logger名:通常使用源代碼的類名

    • 分隔符:--- 標識實際日志的開始

    • 進程 ID

    • 線程名:方括號括起來(可能會截斷控制臺輸出)

    • 日志內容

    五、配置詳解

    1、添加日志依賴

    假如maven依賴中添加了spring-boot-starter-logging:

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

    那么,我們的Spring Boot應用將自動使用 logback 作為應用日志框架,Spring Boot 啟動的時候,由 org.springframework.boot.logging.Logging-Application-Listener根據情況初始化并使用。

    但是呢,實際開發中我們不需要直接添加該依賴,你會發現spring-boot-starter其中包含了 spring-boot-starter-logging,該依賴內容就是 Spring Boot 默認的日志框架 logback

    Java接口測試中日志框架Logback該怎樣使用

    2、配置文件

    Spring Boot 官方推薦優先使用帶有-spring的文件名作為你的日志配置(如使用logback-spring.xml,而不是logback.xml),命名為logback-spring.xml的日志配置文件,spring boot可以為它添加一些 spring boot特有的配置項(下面會提到)。并且放在src/main/resources下面即可。

    配置文件 logback-spring.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <configuration>
    
        <!-- 日志根目錄-->
        <springProperty scope="context" name="LOG_HOME" source="logging.path" defaultValue="./logs/spring-boot-logback"/>
    
        <!-- 日志級別 -->
        <springProperty scope="context" name="LOG_ROOT_LEVEL" source="logging.level.root" defaultValue="DEBUG"/>
    
        <!--  標識這個"STDOUT" 將會添加到這個logger -->
        <springProperty scope="context" name="STDOUT" source="log.stdout" defaultValue="STDOUT"/>
    
        <!-- 日志文件名稱-->
        <property name="LOG_PREFIX" value="spring-boot-logback" />
    
        <!-- 日志文件編碼-->
        <property name="LOG_CHARSET" value="UTF-8" />
    
        <!-- 日志文件路徑+日期-->
        <property name="LOG_DIR" value="${LOG_HOME}/%d{yyyyMMdd}" />
    
        <!--對日志進行格式化-->
        <property name="LOG_MSG" value="- | [%X{requestUUID}] | [%d{yyyyMMdd HH:mm:ss.SSS}] | [%level] | [${HOSTNAME}] | [%thread] | [%logger{36}] | --> %msg|%n "/>
    
        <!--文件大小,默認10MB-->
        <property name="MAX_FILE_SIZE" value="50MB" />
    
        <!-- 配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
        <property name="MAX_HISTORY" value="10"/>
    
        <!--輸出到控制臺-->
        <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
            <!-- 輸出的日志內容格式化-->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_MSG}</pattern>
            </layout>
        </appender>
    
        <!--輸出到文件-->
        <appender name="0" class="ch.qos.logback.core.rolling.RollingFileAppender">
        </appender>
    
        <!-- 定義 ALL 日志的輸出方式:-->
        <appender name="FILE_ALL" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!--日志文件路徑,日志文件名稱-->
            <File>${LOG_HOME}/all_${LOG_PREFIX}.log</File>
    
            <!-- 設置滾動策略,當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候,新的內容寫入新的文件, 默認10MB -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    
                <!--日志文件路徑,新的 ALL 日志文件名稱,“ i ” 是個變量 -->
                <FileNamePattern>${LOG_DIR}/all_${LOG_PREFIX}%i.log</FileNamePattern>
    
                <!-- 配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
                <MaxHistory>${MAX_HISTORY}</MaxHistory>
    
                <!--當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候,新的內容寫入新的文件, 默認10MB-->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
    
            </rollingPolicy>
    
            <!-- 輸出的日志內容格式化-->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <pattern>${LOG_MSG}</pattern>
            </layout>
        </appender>
    
        <!-- 定義 ERROR 日志的輸出方式:-->
        <appender name="FILE_ERROR" class="ch.qos.logback.core.rolling.RollingFileAppender">
            <!-- 下面為配置只輸出error級別的日志 -->
            <filter class="ch.qos.logback.classic.filter.LevelFilter">
                <level>ERROR</level>
                <OnMismatch>DENY</OnMismatch>
                <OnMatch>ACCEPT</OnMatch>
            </filter>
            <!--日志文件路徑,日志文件名稱-->
            <File>${LOG_HOME}/err_${LOG_PREFIX}.log</File>
    
            <!-- 設置滾動策略,當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候,新的內容寫入新的文件, 默認10MB -->
            <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
    
                <!--日志文件路徑,新的 ERR 日志文件名稱,“ i ” 是個變量 -->
                <FileNamePattern>${LOG_DIR}/err_${LOG_PREFIX}%i.log</FileNamePattern>
    
                <!-- 配置日志的滾動時間 ,表示只保留最近 10 天的日志-->
                <MaxHistory>${MAX_HISTORY}</MaxHistory>
    
                <!--當天的日志大小超過 ${MAX_FILE_SIZE} 文件大小時候,新的內容寫入新的文件, 默認10MB-->
                <timeBasedFileNamingAndTriggeringPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedFNATP">
                    <maxFileSize>${MAX_FILE_SIZE}</maxFileSize>
                </timeBasedFileNamingAndTriggeringPolicy>
            </rollingPolicy>
    
            <!-- 輸出的日志內容格式化-->
            <layout class="ch.qos.logback.classic.PatternLayout">
                <Pattern>${LOG_MSG}</Pattern>
            </layout>
        </appender>
    
        <!-- additivity 設為false,則logger內容不附加至root ,配置以配置包下的所有類的日志的打印,級別是 ERROR-->
    
        <logger name="org.springframework"     level="ERROR" />
        <logger name="org.apache.commons"      level="ERROR" />
        <logger name="org.apache.zookeeper"    level="ERROR"  />
        <logger name="com.alibaba.dubbo.monitor" level="ERROR"/>
        <logger name="com.alibaba.dubbo.remoting" level="ERROR" />
    
        <!-- ${LOG_ROOT_LEVEL} 日志級別 -->
        <root level="${LOG_ROOT_LEVEL}">
    
            <!-- 標識這個"${STDOUT}"將會添加到這個logger -->
            <appender-ref ref="${STDOUT}"/>
    
            <!-- FILE_ALL 日志輸出添加到 logger -->
            <appender-ref ref="FILE_ALL"/>
    
            <!-- FILE_ERROR 日志輸出添加到 logger -->
            <appender-ref ref="FILE_ERROR"/>
        </root>
    
    </configuration>

    配置文件 application.yml

    server:
      port: 8888  # 端口號
    
    logging:
      path: ./logs/zuozewei
      level:
        root: info #日志級別從低到高分為TRACE < DEBUG < INFO < WARN < ERROR < FATAL,如果設置為WARN,則低于WARN的信息都不會輸出

    日志會每天新建一個文件夾,日文文件配置的每50兆,一個文本文件,超過新寫入一個

    文件夾:20181228
    文件夾內容:all_spring-boot-logback0.log 
    文件夾內容:all_spring-boot-logback1.log
    文件夾內容:all_spring-boot-logback2.log

    文件夾內容:err_spring-boot-logback0.log

    六、多環境日志輸出

    根據不同環境(prod:生產環境,test:測試環境,dev:開發環境)來定義不同的日志輸出,在 logback-spring.xml中使用 springProfile 節點來定義,方法如下:

    文件名稱不是 logback.xml,想使用spring擴展profile支持,要以logback-spring.xml 命名

    <!-- 生產環境生效 -->
        <springProfile name="prod">
            <root level="error">
                <appender-ref ref="STDOUT" />
                <appender-ref ref="FILE" />
            </root>
        </springProfile>
    
    
        <!-- 測試和開發環境日志級別為INFO/并且記錄日志文件 -->
        <springProfile name="dev,test">
            <!-- 日志輸出級別 -->
            <root level="INFO">
                <appender-ref ref="STDOUT" />
                <appender-ref ref="FILE" />
            </root>
        </springProfile>

    可以啟動服務的時候指定 profile (如不指定使用默認),如指定prod 的方式為:

    java -jar xxx.jar –spring.profiles.active=prod

    七、單元測試

    此處我選擇使用lombok效率插件,所以只需要@Slf4j注解即可簡化private Logger logger = LoggerFactory.getLogger(this.getClass())的寫法
    RunWith(SpringRunner.class)

    @SpringBootTest
    @Slf4j
    public class LogbackdemoApplicationTests {
    
        @Test
        public void contextLoads() {
            log.info("輸出info");
            log.debug("輸出debug");
            log.error("輸出error");
        }
    
    }

    生成的日志:

    - | [] | [20181228 22:53:20.756] | [INFO] | [192.168.1.18] | [main] | [c.z.l.LogbackdemoApplicationTests] | --> Starting LogbackdemoApplicationTests on 192.168.1.18 with PID 82507 (started by apple in /Users/apple/Downloads/Springboot-logback-demo)|
    - | [] | [20181228 22:53:20.762] | [INFO] | [192.168.1.18] | [main] | [c.z.l.LogbackdemoApplicationTests] | --> No active profile set, falling back to default profiles: default|
    - | [] | [20181228 22:53:21.590] | [INFO] | [192.168.1.18] | [main] | [c.z.l.LogbackdemoApplicationTests] | --> Started LogbackdemoApplicationTests in 1.69 seconds (JVM running for 3.525)|
    - | [] | [20181228 22:53:21.955] | [INFO] | [192.168.1.18] | [main] | [c.z.l.LogbackdemoApplicationTests] | --> 輸出info|
    - | [] | [20181228 22:53:21.955] | [ERROR] | [192.168.1.18] | [main] | [c.z.l.LogbackdemoApplicationTests] | --> 輸出error|

    八、工程目錄

    Java接口測試中日志框架Logback該怎樣使用

    九、總結

    到此為止終于介紹完 Logback日志框架了,平時使用的時候推薦用自定義logback-spring.xml來配置,代碼中使用日志也很簡單,類里面添加private Logger logger = LoggerFactory.getLogger(this.getClass()); 即可,如果使用lombok效率插件需要@Slf4j注解。

    Java的特點有哪些

    Java的特點有哪些 1.Java語言作為靜態面向對象編程語言的代表,實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程。 2.Java具有簡單性、面向對象、分布式、安全性、平臺獨立與可移植性、動態性等特點。 3.使用Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等。

    關于“Java接口測試中日志框架Logback該怎樣使用”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

    向AI問一下細節

    免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

    AI

    海南省| 五指山市| 宜宾县| 佛学| 石狮市| 高安市| 奉化市| 邵阳县| 资源县| 高邮市| 伊金霍洛旗| 都匀市| 上林县| 宁化县| 洛扎县| 哈密市| 阿拉善左旗| 铅山县| 澳门| 邵阳县| 镇平县| 海安县| 亚东县| 荆州市| 宜兰县| 霞浦县| 云南省| 延庆县| 鲁山县| 大英县| 临夏县| 象山县| 北京市| 扎鲁特旗| 山西省| 汪清县| 浦东新区| 南部县| 砚山县| 仁怀市| 沙坪坝区|