最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java logback日志的簡單使用

 更新時(shí)間:2021年03月19日 16:58:04   作者:anh6  
這篇文章主要介紹了Java logback日志的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下

說明

logback作為log4j的替代,有很多優(yōu)勢(shì)。要將logback應(yīng)用到項(xiàng)目中,步驟很簡單。加入依賴的jar包和配置文件即可。

logback.xml中主要元素:

  • <property>

定義屬性,定義之后,后文可以通過該變量引用。

  • <appender>

定義日志輸出格式、位置、文件分割等。被<logger>或<root>引用。

  • <logger>

定義日志名稱及對(duì)應(yīng)的級(jí)別。name可以是包名、類名或者單純的字符串。如果是包名或者類名,那么該包或類中的日志級(jí)別,對(duì)應(yīng)這里的設(shè)置;如果是單純的字符串名,那么通過getLogger({name})獲取的日志,采用這里的配置。

  • <root>

定義默認(rèn)使用的日志配置。如果不是<logger>中的配置,那么默認(rèn)使用這里的配置。

使用

logback依賴的包:

<dependency>
 <groupId>org.slf4j</groupId>
 <artifactId>slf4j-api</artifactId>
 <version>1.7.21</version>
</dependency>
<dependency>
 <groupId>ch.qos.logback</groupId>
 <artifactId>logback-core</artifactId>
 <version>1.1.7</version>
</dependency>
<dependency>
 <groupId>ch.qos.logback</groupId>
 <artifactId>logback-classic</artifactId>
 <version>1.1.7</version>
</dependency>

logback.xml配置文件放入classpath中即可,程序會(huì)自動(dòng)讀取該文件。

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

<configuration scan="true" scanPeriod="3 seconds">

 <property name="z_app" value="${z_app:-app}"/>

 <property name="SQL_LEVEL" value="DEBUG"/>
 <property name="SERVICE_LEVEL" value="DEBUG"/>
 <property name="RPC_LEVEL" value="DEBUG"/>
 <property name="BOOT_LEVEL" value="DEBUG"/>
 <property name="BUF_LEVEL" value="DEBUG"/>

 <!-- 09:14:20.256 [main] INFO com.h.db.business.main.Main - asfdasdf -->
 <property name="PATTERN" value="%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>

 <property name="SQL_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Sql.log"/>
 <property name="SERVICE_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Service.log"/>
 <property name="RPC_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}RPC.log"/>
 <property name="BOOT_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Boot.log"/>
 <property name="BUF_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Buf.log"/>
 <property name="TRACE_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}Trace.log"/>

 <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
  <encoder>
   <charset>utf-8</charset>
   <pattern>${PATTERN}</pattern>
  </encoder>
 </appender>

 <property name="ROOT_LEVEL" value="DEBUG"/>

 <property name="APP_LOG_FILE" value="${LOG_HOME}/logs/${z_app}/${z_app}.log"/>

 <appender name="APP_LOG" class="ch.qos.logback.core.rolling.RollingFileAppender">
  <encoder>
   <charset>utf-8</charset>
   <pattern>${PATTERN}</pattern>
  </encoder>
  <prudent>false</prudent>
  <append>true</append>
  <file>${APP_LOG_FILE}</file>
  <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
   <fileNamePattern>${APP_LOG_FILE}.%d{yyyy-MM-dd}-%i.gz</fileNamePattern>
   <maxFileSize>10MB</maxFileSize>
   <maxHistory>15</maxHistory>
   <totalSizeCap>200MB</totalSizeCap>
  </rollingPolicy>
 </appender>

 <!-- 打印具體sql -->
 <logger name="SqlLog" level="DEBUG" >
  <appender-ref ref="APP_LOG" />
  <appender-ref ref="CONSOLE" />
 </logger>
 <!-- 打印事務(wù)軌跡 -->
 <logger name="druid.sql.Connection" level="DEBUG" />
 <logger name="org.springframework.jdbc.datasource.CoreDataSourceUtils" level="DEBUG" />
 <logger name="org.springframework.jdbc.datasource.DataSourceUtils" level="DEBUG" />
 <logger name="org.apache.zookeeper.ClientCnxn" level="info" />
 <logger name="org.mongodb.driver.connection" level="info" />
 <logger name="org.mongodb.driver.cluster" level="info" />
 <logger name="org.apache.zookeeper.Environment" level="ERROR"/>
 <logger name="org.apache.curator.framework.recipes.cache.TreeCache" level="debug"/>
 <logger name="tk.mybatis.mapper.mapperhelper.MapperTemplate" level="DEBUG"/>

 <root level="${ROOT_LEVEL}">
  <appender-ref ref="APP_LOG" />
  <appender-ref ref="CONSOLE" />
 </root>
</configuration>

代碼:

// 或者LoggerFactory.getLogger(${logger_name}),這里logger_name為logback.xml中l(wèi)ogger標(biāo)簽定義的名稱
private static final Logger logger2 = LoggerFactory.getLogger(XX.class);

常見問題

包沖突

如果出現(xiàn):

org.slf4j.impl.Log4jLoggerFactory cannot be cast to ch.qos.logback.classic.LoggerContext

或:

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/E:/**/WEB-INF/lib/activemq-all-5.10.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/E:/**/WEB-INF/lib/slf4j-simple-1.6.3.jar!/org/slf4j/impl/StaticLoggerBinder.class]

表示有包沖突,將沖突的包刪除即可。一般是由log4j,activemq-all等包導(dǎo)致,刪除它們。

No such instance field: 'logger2'

一開始認(rèn)為是編譯緩存的原因,rebuild了好幾次,都是同樣的問題。

通過debugger的evaluate工具,執(zhí)行LoggerFactory.getLogger("SqlLog").info("testtest"),又是正常的,可以正確在控制臺(tái)和文件中輸出日志內(nèi)容。這說明,代碼是沒有問題的,且獲取的logger實(shí)例也正確(logback的)。

通過evaluate工具,輸入logger2始終有問題,但是輸入logger卻沒有問題,logger.info會(huì)報(bào)錯(cuò),提示是log4j的包。這已經(jīng)說明.class不是最新的了。因?yàn)閘ogger是修改之前定義了,后來改成了logger2。

只是,斷點(diǎn)的時(shí)候,代碼行的位置并沒有錯(cuò)亂。和文件不是最新的似乎有點(diǎn)矛盾。

最后,發(fā)現(xiàn)還是編譯緩存的原因。

將.class文件手動(dòng)清除,重新編譯啟動(dòng),問題解決。

看來,idea的rebuild有時(shí)候并不靠譜,無法保證.class文件是最新的。

以上就是Java logback日志的使用的詳細(xì)內(nèi)容,更多關(guān)于Java logback日志的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • java常用工具類之Excel操作類及依賴包下載

    java常用工具類之Excel操作類及依賴包下載

    這篇文章主要介紹了java常用工具類Excel操作類及依賴包下載,需要的朋友可以參考下
    2014-07-07
  • 攔截器獲取request的值之后,Controller拿不到值的解決

    攔截器獲取request的值之后,Controller拿不到值的解決

    這篇文章主要介紹了攔截器獲取request的值之后,Controller拿不到值的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-10-10
  • Spring中的@ModelAttribute模型屬性綁定詳解

    Spring中的@ModelAttribute模型屬性綁定詳解

    這篇文章主要介紹了Spring中的@ModelAttribute模型屬性綁定詳解,@ModelAttribute用于將方法參數(shù)或返回值綁定到Model屬性上,并公開給Web視圖,支持使用@RequestMapping注釋的Controller類,需要的朋友可以參考下
    2024-02-02
  • Java 數(shù)組迭代你會(huì)用嗎

    Java 數(shù)組迭代你會(huì)用嗎

    Java 數(shù)組是我們學(xué)習(xí)或工作中常用到的數(shù)據(jù)結(jié)構(gòu),我們會(huì)經(jīng)常寫數(shù)組迭代的代碼,本文介紹三種數(shù)組迭代的方式,感興趣的可以了解一下
    2021-09-09
  • 淺談關(guān)于Java正則和轉(zhuǎn)義中\(zhòng)\和\\\\的理解

    淺談關(guān)于Java正則和轉(zhuǎn)義中\(zhòng)\和\\\\的理解

    這篇文章主要介紹了淺談關(guān)于Java正則和轉(zhuǎn)義中\(zhòng)\和\\\\的理解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • 前置++和后置++ 運(yùn)算的詳解及實(shí)例代碼

    前置++和后置++ 運(yùn)算的詳解及實(shí)例代碼

    這篇文章主要介紹了前置++和后置++ 的相關(guān)資料,并附示例代碼,幫助大家學(xué)習(xí)參考,需要的朋友可以參考下
    2016-09-09
  • 解決lombok的@Data注解無法打印繼承的父類信息問題

    解決lombok的@Data注解無法打印繼承的父類信息問題

    在Java編程中,使用@Data注解可能導(dǎo)致子類繼承父類屬性后,打印只顯示子類信息不顯示父類信息,問題源于@Data注解作用域僅限于當(dāng)前類,解決方法包括使用@ToString(callSuper=true)注解或重寫toString方法
    2024-11-11
  • Java的List集合框架之Vector詳細(xì)解析

    Java的List集合框架之Vector詳細(xì)解析

    這篇文章主要介紹了Java的List集合框架之Vector詳細(xì)解析,List接口繼承Collection,Collection繼承于Iterable,List接口實(shí)現(xiàn)類分為Vector、ArrayList、LinkedList,Vector底層是一個(gè)Object數(shù)組,需要的朋友可以參考下
    2023-11-11
  • java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié)

    java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié)

    這篇文章主要介紹了java?9大性能優(yōu)化經(jīng)驗(yàn)總結(jié),包括:Java代碼優(yōu)化,數(shù)據(jù)庫優(yōu)化,分布式緩存,異步化,Web前段,搜索引擎優(yōu)化等需要的朋友可以參考下
    2023-02-02
  • Springboot 多module打包方案示例詳解

    Springboot 多module打包方案示例詳解

    在使用Springboot進(jìn)行多模塊項(xiàng)目開發(fā)時(shí),可能會(huì)遇到模塊間依賴不存在的問題,本文介紹了兩種主要的解決方案,這些方法有助于生成可執(zhí)行的jar包,并確保模塊間正確依賴,適用于多層項(xiàng)目結(jié)構(gòu)中的有效管理和打包,感興趣的朋友跟隨小編一起看看吧
    2023-07-07

最新評(píng)論

林甸县| 肃宁县| 平利县| 黄骅市| 湄潭县| 剑河县| 芮城县| 锡林浩特市| 集贤县| 滨海县| 永吉县| 左云县| 环江| 莲花县| 夏津县| 尉犁县| 长春市| 常熟市| 曲周县| 夹江县| 鱼台县| 岑巩县| 金山区| 吉木乃县| 安徽省| 加查县| 黄山市| 米易县| 阿拉善右旗| 乌苏市| 方正县| 广安市| 吴桥县| 郎溪县| 广州市| 波密县| 乌审旗| 惠安县| 商城县| 来凤县| 延长县|