沒有額外的學(xué)習(xí)成本,沒有其他的操作,只需要將jar包完全替換掉 log4j 即可。
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價比射陽網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式射陽網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋射陽地區(qū)。費(fèi)用合理售后完善,十多年實體公司更值得信賴。
組件:reload4j
reload4j 官網(wǎng)
maven
ch.qos.reload4j
reload4j
1.2.22
reload4j 是 log4j 原作者 Ceki Gülcü 發(fā)起 是基于 log4j 版本 1.2.17 的分支,其主要目的是為了解決 log4j 1.2.17 中的漏洞。
reload4j 可以做到完全平替 log4j 。
其中 log4j 1中 對安全性必要大影響的 CVE-2021-4104 CVE-2022-23302 已經(jīng)在 reload4j 的 1.2.22 版本中修復(fù)。
英文方案
英文方案主要涉及到代碼的改造,將原本的 log4j1 徹底改造成 log4j2 。
或者我們使用下面的方式通過路由鏈接 log4j1 的api 完成準(zhǔn)無代碼遷移。
組件: log4j-api 日志接口; log4j-core 具體的實現(xiàn); log4j-1.2-api log4j1 到 log4j2 的路由器,在使用 log4j1 的 api 時會在內(nèi)部路由到 log4j2 的 api。
log4j2 官網(wǎng)
log4j2-api maven
log4j2-core maven
log4j-1.2-api maven
log4j-1.2-api 使用方法(英文)
org.apache.logging.log4j
log4j-1.2-api
2.12.4
org.apache.logging.log4j
log4j-api
2.12.4
org.apache.logging.log4j
log4j-core
2.12.4
但無論如何幾乎都無法替代以下幾個類的內(nèi)容缺失導(dǎo)致的代碼變更。
org.apache.log4j.spi.ThrowableInformation
org.apache.log4j.spi.ErrorHandler
等等
改造的功能點(diǎn)更多的傾向于 log4j 中對異常消息處理,異常數(shù)據(jù)處理等功能,這部分功能在項目中盡可能不要使用,從某些角度上來說,數(shù)據(jù)處理、消息處理這部分有專門的獨(dú)立處理組件,日志組件就應(yīng)該處理日志,尤其盡可能異步打印到日志文件或日志流中。
找到所有用到 org.apache.log4j 的包,調(diào)整代碼使用過程即可。
此處只介紹 SLF4J 和 logback
slf4j 使用手冊
logback 使用手冊
slf4j maven
logback maven
org.slf4j
slf4j-api
2.0.3
ch.qos.logback
logback-classic
1.4.4
logback
debug
%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n
${log.path}
${log.path}.%d{yyyy-MM-dd}.zip
%date %level [%thread] %logger{36} [%file : %line] %msg%n