日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何使用不同的记录器实现配置SLF4J

發布時間:2023/12/3 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何使用不同的记录器实现配置SLF4J 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

將slf4j庫用作Java應用程序日志記錄API層有很多好處。 在這里,我將展示一些示例,說明如何與不同的記錄器一起使用和配置它。

您可以將slf4j視為Java接口,然后在運行時需要一個實現(僅一個)來提供實際的日志記錄詳細信息,例如寫入STDOUT或文件等。每個日志記錄實現(或稱為綁定)都將顯然,它們具有配置日志輸出的方式,但是您的應用程序將保持不可知狀態,并始終使用相同的org.slf4j.Logger API。 讓我們看看這在實踐中是如何工作的。

在簡單記錄器中使用

在pom.xml創建一個基于Maven的項目。

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId><version>1.7.5</version></dependency>

現在,您可以像這樣在Java代碼中使用Logger 。

package deng; import org.slf4j.*; public class Hello {static Logger LOGGER = LoggerFactory.getLogger(Hello.class);public static void main(String[] args) {for (int i = 0; i < 10; i++)if (i % 2 == 0)LOGGER.info("Hello {}", i);elseLOGGER.debug("I am on index {}", i);} }

上面的代碼將編譯您的程序,但是當您運行它時,您將看到這些輸出。

bash> java deng.Hello SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

這就是說,在運行時,您缺少日志記錄“實現”(或記錄器綁定),因此slf4j僅使用“ NOP”實現,而沒有執行任何操作。 為了正確查看輸出,您可以嘗試使用根本不需要任何配置的簡單實現! 只需返回您的pom.xml并添加以下內容:

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.5</version></dependency>

現在,您將看到在INFO級別的STDOUT上記錄輸出。 這個簡單的記錄器將默認顯示任何INFO級別或更高級別的消息。 為了查看DEBUG消息,您需要在Java啟動時傳遞此系統屬性-Dorg.slf4j.simpleLogger.defaultLogLevel=DEBUG 。

在Log4j記錄器中使用

現在,我們可以嘗試并交換不同的記錄器實現,但是您的應用程序代碼可以保持不變。 我們需要的是用另一個流行的記錄器實現(例如Log4j)替換slf4j-simple 。

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-log4j12</artifactId><version>1.7.5</version></dependency>

同樣,我們必須為選擇的每個實現配置日志記錄。 在這種情況下,我們需要一個src/main/resources/log4j.properties文件。

log4j.rootLogger=DEBUG, STDOUTlog4j.logger.deng=INFOlog4j.appender.STDOUT=org.apache.log4j.ConsoleAppenderlog4j.appender.STDOUT.layout=org.apache.log4j.PatternLayoutlog4j.appender.STDOUT.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n

重新運行您的程序,您應該會看到類似的輸出。

JDK實際上附帶了一個記錄程序包,您可以使用此記錄程序實現替換pom.xml 。

<dependency><groupId>org.slf4j</groupId><artifactId>slf4j-jdk14</artifactId><version>1.7.5</version></dependency>

現在,JDK日志記錄的配置有點難以使用。 不僅需要一個配置文件,例如src/main/resources/logging.properties ,而且您還需要添加一個系統屬性-Djava.util.logging.config.file=logging.properties ,以便它進行選擇。起來 這是一個入門的示例:

等級= INFO

handlers=java.util.logging.ConsoleHandler java.util.logging.ConsoleHandler.level=FINEST deng.level=FINEST

結合使用

logback記錄器實現是超級dupa質量實現。 如果您打算編寫投入生產的嚴肅代碼,則可能需要評估此選項。 再次修改您的pom.xml以替換為:

<dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.0.13</version></dependency>

這是開始配置的src/main/resources/logback.xml配置示例。

<configuration><appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"><encoder><pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern></encoder></appender><logger name="deng" level="DEBUG"/><root level="INFO"><appender-ref ref="STDOUT" /></root> </configuration>

使用

如果要提供供大型最終用戶使用的Java庫,則最好將項目設置為僅依賴slf4j-api ,然后讓用戶在其開發或運行時環境中選擇任何記錄器實現。 作為最終用戶,他們可以快速選擇上述選項之一,并充分利用自己喜歡的日志記錄實現功能。

資源資源

  • http://slf4j.org/
  • http://logging.apache.org/log4j/1.2/
  • http://docs.oracle.com/javase/7/docs/technotes/guides/logging/
  • http://logback.qos.ch/

參考: 如何在A Programmer's Journal博客上與JCG合作伙伴 Zemian Deng 一起使用不同的記錄器實現配置SLF4J 。

翻譯自: https://www.javacodegeeks.com/2013/08/how-to-configure-slf4j-with-different-logger-implementations.html

總結

以上是生活随笔為你收集整理的如何使用不同的记录器实现配置SLF4J的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。