国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - Java教程 - Java logback日志的簡單使用

Java logback日志的簡單使用

2021-08-26 11:17anh6 Java教程

這篇文章主要介紹了Java logback日志的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下

說明

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

logback.xml中主要元素:

  • <property>

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

  • <appender>

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

  • <logger>

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

  • <root>

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

使用

logback依賴的包:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<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中即可,程序會自動讀取該文件。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?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>

代碼:

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

常見問題

包沖突

如果出現(xiàn):

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

或:

?
1
2
3
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'

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

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

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

只是,斷點的時候,代碼行的位置并沒有錯亂。和文件不是最新的似乎有點矛盾。

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

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

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

以上就是Java logback日志的使用的詳細內(nèi)容,更多關(guān)于Java logback日志的資料請關(guān)注服務(wù)器之家其它相關(guān)文章!

原文鏈接:https://segmentfault.com/a/1190000039671131

延伸 · 閱讀

精彩推薦
  • Java教程Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決

    這篇文章主要介紹了Java BufferWriter寫文件寫不進去或缺失數(shù)據(jù)的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望...

    spcoder14552021-10-18
  • Java教程小米推送Java代碼

    小米推送Java代碼

    今天小編就為大家分享一篇關(guān)于小米推送Java代碼,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧...

    富貴穩(wěn)中求8032021-07-12
  • Java教程xml與Java對象的轉(zhuǎn)換詳解

    xml與Java對象的轉(zhuǎn)換詳解

    這篇文章主要介紹了xml與Java對象的轉(zhuǎn)換詳解的相關(guān)資料,需要的朋友可以參考下...

    Java教程網(wǎng)2942020-09-17
  • Java教程Java實現(xiàn)搶紅包功能

    Java實現(xiàn)搶紅包功能

    這篇文章主要為大家詳細介紹了Java實現(xiàn)搶紅包功能,采用多線程模擬多人同時搶紅包,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙...

    littleschemer13532021-05-16
  • Java教程20個非常實用的Java程序代碼片段

    20個非常實用的Java程序代碼片段

    這篇文章主要為大家分享了20個非常實用的Java程序片段,對java開發(fā)項目有所幫助,感興趣的小伙伴們可以參考一下 ...

    lijiao5352020-04-06
  • Java教程Java使用SAX解析xml的示例

    Java使用SAX解析xml的示例

    這篇文章主要介紹了Java使用SAX解析xml的示例,幫助大家更好的理解和學(xué)習(xí)使用Java,感興趣的朋友可以了解下...

    大行者10067412021-08-30
  • Java教程Java8中Stream使用的一個注意事項

    Java8中Stream使用的一個注意事項

    最近在工作中發(fā)現(xiàn)了對于集合操作轉(zhuǎn)換的神器,java8新特性 stream,但在使用中遇到了一個非常重要的注意點,所以這篇文章主要給大家介紹了關(guān)于Java8中S...

    阿杜7472021-02-04
  • Java教程升級IDEA后Lombok不能使用的解決方法

    升級IDEA后Lombok不能使用的解決方法

    最近看到提示IDEA提示升級,尋思已經(jīng)有好久沒有升過級了。升級完畢重啟之后,突然發(fā)現(xiàn)好多錯誤,本文就來介紹一下如何解決,感興趣的可以了解一下...

    程序猿DD9332021-10-08
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 欧美一区二区三区精品 | 午夜影院网站 | 日本末发育嫩小xxxx | 一区二区三区视频 | 亚洲精品久久久久久动漫 | 久久久久成人精品 | 永久91嫩草亚洲精品人人 | 亚洲精品影院 | 国产精品69毛片高清亚洲 | 亚洲成人免费网址 | 国产精品久久久久久久一区探花 | 国产一区| 久久精品中文字幕 | 精品中文字幕一区二区三区av | 中文字幕一区二区三区乱码图片 | 国产黄色91视频 | 国产一级一级毛片女人精品 | 亚洲视频在线观看 | 亚洲精品国产9999久久久久 | 一级一片免费视频 | 欧美99| 一级黄色大片 | 久久久99精品免费观看 | 中文字幕国产在线视频 | 亚洲第一免费看片 | 久久夜色精品国产 | 欧洲一级毛片 | 国产成人一区 | 成人在线精品视频 | 伊人一区| 午夜精品一区二区三区在线观看 | 日韩欧美1区 | 久久99久久久久久 | 中文字幕亚洲一区二区三区 | 欧美午夜一区二区 | 激情视频网站 | 久草美女 | 亚洲精品日韩在线 | 中文字幕亚洲一区二区三区 | 亚洲网站在线观看 | 一级全黄性色生活片 |