亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
1。核心:java.util.logging(Jul)
2。舊後衛(wèi):log4j 1.x
3。流行選擇:log4j 2
4。優(yōu)雅的替代品:登錄
5。抽象層:SLF4J(Java的簡單記錄外牆)
6。新孩子:java.util.logging slf4j?還是7月去了?
7。現(xiàn)實世界應(yīng)用的最佳實踐
最後的想法
首頁 Java java教程 Java記錄框架的開發(fā)人員指南

Java記錄框架的開發(fā)人員指南

Aug 01, 2025 am 06:32 AM
java 日誌框架

使用SLF4J來記錄抽象來將代碼與實現(xiàn)分解。 2。為簡單和彈簧啟動兼容性選擇記錄,或log4j 2用於高性能和高級功能。 3。避免JUL和LOG4J 1.x,除了舊系統(tǒng)。 4。在需要時使用Jul-to-SLF4J路由將日誌路由到SLF4J。 5。始終與異常對象進(jìn)行登錄異常,使用參數(shù)化消息,避免敏感數(shù)據(jù),啟用結(jié)構(gòu)化的記錄和測試配置 - 這可以確??删S護(hù),可辯論和安全的生產(chǎn)日誌記錄。

Java記錄框架的開發(fā)人員指南

Java Logging是每個開發(fā)人員使用的事情之一,但通常不會深入思考 - 直到生產(chǎn)中出現(xiàn)問題。選擇正確的記錄框架(或了解您已經(jīng)使用的工作人員如何一起工作)可以節(jié)省數(shù)小時的調(diào)試並使您的應(yīng)用程序更可維護(hù)。

Java記錄框架的開發(fā)人員指南

讓我們以實用,開發(fā)人員友好的方式分解Java的記錄景觀,而沒有營銷絨毛,這是您需要知道的做出好的決定的知識。


1。核心:java.util.logging(Jul)

內(nèi)置,但經(jīng)常被忽略

Java記錄框架的開發(fā)人員指南

Java帶有其自己的伐木框架: java.util.logging或Jul Jul。它是標(biāo)準(zhǔn)庫的一部分,因此您不需要任何外部依賴項。

導(dǎo)入java.util.logging.logger;

公共類MyApp {
    私有靜態(tài)最終logger logger = logger.getLogger(myApp.class.getName());

    public void dosomething(){
        logger.info(“發(fā)生某事發(fā)生”);
    }
}

優(yōu)點:

Java記錄框架的開發(fā)人員指南
  • 沒有額外的依賴性
  • 簡單用於基本用途
  • 開箱即用

缺點:

  • 與其他人相比有限的功能
  • 冗長的配置
  • 高負(fù)載下的性能不佳
  • 不廣泛用於現(xiàn)代框架

何時使用它:小應(yīng)用程序,學(xué)習(xí)或無法添加依賴關(guān)係的環(huán)境。否則,大多數(shù)團(tuán)隊都選擇更強大的東西。


2。舊後衛(wèi):log4j 1.x

一旦占主導(dǎo)地位,現(xiàn)在被棄用了

Log4J是2000年代初期的首選伐木框架。它通過XML或?qū)傩晕募峁┝遂`活性,性能和可配置性。

但是log4j 1.x被棄用。不要在新項目中使用它。它是未受歡迎的,有已知的性能問題,並且缺乏現(xiàn)代特徵。


3。流行選擇:log4j 2

現(xiàn)代,快速且功能豐富

log4j 2是log4j 1.x的完整重寫,由Apache積極維護(hù)。它修復(fù)了其前身的建築缺陷,並添加了出色的功能。

 <! -  log4j2.xml->
<Configuration>
  <Appenders>
    <console name =“ console” target =“ system_out”>
      <pattern layout pattern =“%d {hh:mm:ss} [%t]%-5級logger {36}  - %msg%n“/>
    </console>
  </appenders>
  <Loggers>
    <root Level =“ info”>
      <appenderref ref =“ console”/>
    </root>
  </logers>
</configuration>

優(yōu)點:

  • 出色的性能(尤其是與異步記錄儀)
  • 模塊化體系結(jié)構(gòu)
  • 支持JSON,自定義級別,插件
  • 與現(xiàn)代工具(Kafka,AWS等)很好地集成

缺點:

  • 遭受2021 log4shell漏洞的陰影(CVE-2021-44228),儘管已修復(fù)並修補
  • 比某些替代方案重略重

用例:高性能應(yīng)用程序,微服務(wù)或需要高級記錄功能時。


4。優(yōu)雅的替代品:登錄

log4j 1.x的精神繼任者

LogBack由CekiGülcü(Log4J的原始作者)開發(fā),其設(shè)計為比其前身更快,更靈活。這是SLF4J的本地實現(xiàn)(更快更多)。

 <! -  logback.xml->
<Configuration>
  <appender name =“ stdout” class =“ ch.qos.logback.core.consoleappender”>
    <encoder>
      <pattern>%d {hh:mm:ss} [%螺紋]%-5級logger {36}  - %msg%n </dattern>
    </encoder>
  </appender>

  <root Level =“ info”>
    <appender-ref ref =“ stdout” />
  </root>
</configuration>

優(yōu)點:

  • 快速可靠
  • 很棒的文檔
  • 內(nèi)置支持自動加載配置文件
  • 與SLF4J無縫集成

缺點:

  • 沒有內(nèi)置支持JSON格式(需要額外的庫)
  • 與log4j 2相比,開發(fā)有所放緩

用例: Spring Boot應(yīng)用程序(默認(rèn)情況下使用LogBack),或者需要乾淨(jìng),成熟的設(shè)置時。


5。抽象層:SLF4J(Java的簡單記錄外牆)

不是伐木框架 - 它是一個立面

SLF4J本身不是記錄器。這是一個記錄抽象,使您可以編寫記錄代碼而不將其與特定的後端聯(lián)繫在一起。

導(dǎo)入org.slf4j.logger;
導(dǎo)入org.slf4j.loggerfactory;

公共類MyService {
    私有靜態(tài)最終logger logger = loggerfactory.getLogger(myService.Class);

    公共void Process(){
        logger.info(“處理項目:{}”,itemID);
    }
}

為什麼重要:

  • 將您的代碼與實際記錄框架分開
  • 您只需更改依賴項就可以從記錄到log4j 2(或7月)切換
  • 提供乾淨(jìng),參數(shù)化的記錄(熱路徑中沒有字符串串聯(lián))

它的工作原理:

  • 您對SLF4J API進(jìn)行編碼
  • 在運行時,SLF4J綁定到真實實現(xiàn)(LogBack,Log4J 2,Jul等)
  • 使用slf4j-api一種綁定(例如, logback-classiclog4j-slf4j-impl

專家提示:始終取決於slf4j-api ,從不直接在庫中的具體日誌記錄框架上。


6。新孩子:java.util.logging slf4j?還是7月去了?

等等 - 7月和SLF4J呢?

您可以使用jul-to-slf4j橋?qū)UL日誌路由到SLF4J。這使您可以將所有記錄集中到主伐木管道中。

 //在應(yīng)用啟動
slf4jbridgehandler.install();

現(xiàn)在, java.util.logging.Logger消息通過slf4j並顯示在您的logback/log4j 2輸出中。


7?,F(xiàn)實世界應(yīng)用的最佳實踐

這是生產(chǎn)中有效的方法:

  • ?在您的代碼中使用SLF4J - 總是
  • ?選擇一個後端:logback(更簡單)或log4j 2(更快,更多功能)
  • ?避免記錄敏感數(shù)據(jù)- 掩碼密碼,令牌,PII
  • ?盡可能使用結(jié)構(gòu)化日誌記錄- 考慮LogStash或JSON佈局
  • ?不要在日誌語句中串聯(lián)串- 使用佔位符
logger.debug(“從{}登錄”,user.getId(),ip); // 好的
logger.debug(“ user” user.getId()“登錄”); //不好 - 始終評估字符串
  • ?每個軟件包的控制日誌級別- 例如, debug您的應(yīng)用程序, warn第三方libs
  • ?測試您的日誌記錄配置- 確保其在登臺中起作用

最後的想法

您不需要過度思考記錄,但是您應(yīng)該儘早得到它。

對於大多數(shù)新項目:

  • 如果需要簡單性和可靠的默認(rèn)值(尤其是在Spring Boot)
  • 如果您需要最大的性能或高級功能,請使用SLF4J log4j 2

除非您要維護(hù)舊版代碼,否則請避免JUL和LOG4J 1.x。

無論如何 -永遠(yuǎn)不要記錄這樣的例外

 } catch(異常E){
    logger.error(“某物破產(chǎn)”);
}

始終包括例外:

 } catch(異常E){
    logger.error(“某物破裂”,e);
}

基本上就是這樣。紮實的伐木不是浮華的,但這是您未來的自我可以做的最好的事情之一。

以上是Java記錄框架的開發(fā)人員指南的詳細(xì)內(nèi)容。更多資訊請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

用雅加達(dá)EE在Java建立靜止的API 用雅加達(dá)EE在Java建立靜止的API Jul 30, 2025 am 03:05 AM

SetupaMaven/GradleprojectwithJAX-RSdependencieslikeJersey;2.CreateaRESTresourceusingannotationssuchas@Pathand@GET;3.ConfiguretheapplicationviaApplicationsubclassorweb.xml;4.AddJacksonforJSONbindingbyincludingjersey-media-json-jackson;5.DeploytoaJakar

Java項目管理Maven的開發(fā)人員指南 Java項目管理Maven的開發(fā)人員指南 Jul 30, 2025 am 02:41 AM

Maven是Java項目管理和構(gòu)建的標(biāo)準(zhǔn)工具,答案在於它通過pom.xml實現(xiàn)項目結(jié)構(gòu)標(biāo)準(zhǔn)化、依賴管理、構(gòu)建生命週期自動化和插件擴展;1.使用pom.xml定義groupId、artifactId、version和dependencies;2.掌握核心命令如mvnclean、compile、test、package、install和deploy;3.利用dependencyManagement和exclusions管理依賴版本與衝突;4.通過多模塊項目結(jié)構(gòu)組織大型應(yīng)用並由父POM統(tǒng)一管理;5.配

如何將Java MistageDigest用於哈希(MD5,SHA-256)? 如何將Java MistageDigest用於哈希(MD5,SHA-256)? Jul 30, 2025 am 02:58 AM

要使用Java生成哈希值,可通過MessageDigest類實現(xiàn)。 1.獲取指定算法的實例,如MD5或SHA-256;2.調(diào)用.update()方法傳入待加密數(shù)據(jù);3.調(diào)用.digest()方法獲取哈希字節(jié)數(shù)組;4.將字節(jié)數(shù)組轉(zhuǎn)換為十六進(jìn)製字符串以便讀取;對於大文件等輸入,應(yīng)分塊讀取並多次調(diào)用.update();推薦使用SHA-256而非MD5或SHA-1以確保安全性。

CSS暗模式切換示例 CSS暗模式切換示例 Jul 30, 2025 am 05:28 AM

首先通過JavaScript獲取用戶系統(tǒng)偏好和本地存儲的主題設(shè)置,初始化頁面主題;1.HTML結(jié)構(gòu)包含一個按鈕用於觸發(fā)主題切換;2.CSS使用:root定義亮色主題變量,.dark-mode類定義暗色主題變量,並通過var()應(yīng)用這些變量;3.JavaScript檢測prefers-color-scheme並讀取localStorage決定初始主題;4.點擊按鈕時切換html元素上的dark-mode類,並將當(dāng)前狀態(tài)保存至localStorage;5.所有顏色變化均帶有0.3秒過渡動畫,提升用戶

CSS下拉菜單示例 CSS下拉菜單示例 Jul 30, 2025 am 05:36 AM

是的,一個常見的CSS下拉菜單可以通過純HTML和CSS實現(xiàn),無需JavaScript。 1.使用嵌套的ul和li構(gòu)建菜單結(jié)構(gòu);2.通過:hover偽類控制下拉內(nèi)容的顯示與隱藏;3.父級li設(shè)置position:relative,子菜單使用position:absolute進(jìn)行定位;4.子菜單默認(rèn)display:none,懸停時變?yōu)閐isplay:block;5.可通過嵌套實現(xiàn)多級下拉,結(jié)合transition添加淡入動畫,配合媒體查詢適配移動端,整個方案簡潔且無需JavaScript支持,適合大

VSCODE設(shè)置。 JSON位置 VSCODE設(shè)置。 JSON位置 Aug 01, 2025 am 06:12 AM

settings.json文件位於用戶級或工作區(qū)級路徑,用於自定義VSCode設(shè)置。 1.用戶級路徑:Windows為C:\Users\\AppData\Roaming\Code\User\settings.json,macOS為/Users//Library/ApplicationSupport/Code/User/settings.json,Linux為/home//.config/Code/User/settings.json;2.工作區(qū)級路徑:項目根目錄下的.vscode/settings

Python Parse Date String示例 Python Parse Date String示例 Jul 30, 2025 am 03:32 AM

使用datetime.strptime()可將日期字符串轉(zhuǎn)換為datetime對象,1.基本用法:通過"%Y-%m-%d"解析"2023-10-05"為datetime對象;2.支持多種格式如"%m/%d/%Y"解析美式日期、"%d/%m/%Y"解析英式日期、"%b%d,%Y%I:%M%p"解析帶AM/PM的時間;3.可用dateutil.parser.parse()自動推斷未知格式;4.使用.d

崇高文本自動關(guān)閉HTML標(biāo)籤 崇高文本自動關(guān)閉HTML標(biāo)籤 Jul 30, 2025 am 02:41 AM

安裝Emmet插件可實現(xiàn)智能自動閉合標(biāo)籤並支持縮寫語法;2.啟用"auto_match_enabled":true讓Sublime自動補全簡單標(biāo)籤;3.使用Alt .(Win)或Ctrl Shift .(Mac)快捷鍵手動閉合當(dāng)前標(biāo)籤——推薦日常使用Emmet,輕量需求可用後兩種方式組合,效率足夠且設(shè)置簡單。

See all articles