java lombok logback 配置日志打印


meven

<dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     <version>1.16.22</version>
</dependency>

resources/logback.xml 文件配置

復制代碼
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 項目名稱 -->
<property name="projectname" value="testapollo" />
<!-- 日志存放路徑 -->
<property name="log.path" value="/app/${projectname}}/logs" />
<!-- 日志輸出格式 -->
<property name="log.pattern" value="%d{yyy-MM-dd HH:mm:ss.SSS} [%X{X-B3-TraceId:-},%X{X-B3-SpanId:-}] [%thread] %-5level %logger{20} - [%method,%line] - %msg%n" />

<!-- 控制台輸出 -->
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
</appender>

<!-- 系統日志輸出 -->
<appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${projectname}-info.log</file>
<!-- 循環政策:基於時間創建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/${projectname}-info.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>INFO</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>

<appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${log.path}/${projectname}-error.log</file>
<!-- 循環政策:基於時間創建日志文件 -->
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 日志文件名格式 -->
<fileNamePattern>${log.path}/${projectname}-error.%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志最大的歷史 60天 -->
<maxHistory>60</maxHistory>
</rollingPolicy>
<encoder>
<pattern>${log.pattern}</pattern>
</encoder>
<filter class="ch.qos.logback.classic.filter.LevelFilter">
<!-- 過濾的級別 -->
<level>ERROR</level>
<!-- 匹配時的操作:接收(記錄) -->
<onMatch>ACCEPT</onMatch>
<!-- 不匹配時的操作:拒絕(不記錄) -->
<onMismatch>DENY</onMismatch>
</filter>
</appender>


<!-- 系統模塊日志級別控制 -->
<logger name="com.loop" level="info" />
<!-- Spring日志級別控制 -->
<logger name="org.springframework" level="warn" />

<root level="info">
<appender-ref ref="console" />
</root>

<!--系統操作日志-->
<root level="info">
<appender-ref ref="file_info" />
<appender-ref ref="file_error" />
</root>

</configuration>
復制代碼

 

在類上加上注解 @Slf4j

在類中直接打印對應級別的日志

log.info();                   //對比老版

log.error();

log.debug();           //對比老版

總結:

 在老版中的info和debug要輸出;
          

 if(logger.isDebugEnabled()){

              logger.debug("xxxxxxxxx");

        }

 

 

 

 

Logback是log4j框架的作者開發的新一代日志框架,它效率更高、能夠適應諸多的運行環境,同時天然支持SLF4J。

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

  在生產環境:禁止使用DEBUG日志,且有選擇地輸出INFO日志

默認的幾個級別: debug < info < warn < error < fatal  

 

1)級別之間是包含的關系,意思是如果你設置日志級別是trace,則大於等於這個級別的日志都會輸出。(這里可理解為紗網,日志級別越高,紗網的網孔越小,級別越低網孔越大

2)基本上默認的級別沒多大區別,就是一個默認的設定。你可以通過它的API自己定義級別。你也可以隨意調用這些方法,不過你要在配置文件里面好好處理了,否則就起不到日志的作用了,而且也不易讀,相當於一個規范,你要完全定義一套也可以,不用沒多大必要。

3)這不同的級別的含義大家都很容易理解,這里就簡單介紹一下:

debug: 調試么,我一般就只用這個作為最低級別,trace壓根不用。是在沒辦法就用eclipse或者idea的debug功能就好了么。

info: 輸出一下你感興趣的或者重要的信息,這個用的最多了。

warn: 有些信息不是錯誤信息,但是也要給程序員的一些提示,類似於eclipse中代碼的驗證不是有error 和warn(不算錯誤但是也請注意,比如以下depressed的方法)。

error: 錯誤信息。用的也比較多。

fatal: 級別比較高了。重大錯誤,這種級別你可以直接停止程序了,是不應該出現的錯誤么!不用那么緊張,其實就是一個程度的問題。

 

添加日志依賴

假如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。

參考:https://www.cnblogs.com/super-admin/p/10077129.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM