第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

如何在 GetLogger 中獲取類名并在 log4j 2 中打印正確的類名

如何在 GetLogger 中獲取類名并在 log4j 2 中打印正確的類名

猛跑小豬 2023-09-20 17:02:11
我創(chuàng)建了一個(gè)使用 log4j2 進(jìn)行日志記錄的包裝器。這是一個(gè)自定義類,創(chuàng)建以下對象:logger = LogManager.getLogger(caller);問題是當(dāng)我打印 LogEvent 時(shí),我沒有在源中獲得正確的類名。例如。如果abc.java是logging log.info,我需要捕獲abc.java源而不是customClass名稱。
查看完整描述

1 回答

?
手掌心

TA貢獻(xiàn)1942條經(jīng)驗(yàn) 獲得超3個(gè)贊

您無法Logger在包裝對象中創(chuàng)建一次,因?yàn)樗鞘褂锰囟ǖ念惷ú皇悄胍模﹦?chuàng)建的。


因此,快速而骯臟的方法是調(diào)用LogManager.getLogger(caller).info(message)每個(gè)日志調(diào)用,并將調(diào)用類作為調(diào)用者傳遞。Log4J 保留已創(chuàng)建的 Logger 的哈希表,因此,如果同一調(diào)用者類已存在 Logger,則不會(huì)創(chuàng)建新的 Logger。


但是,我認(rèn)為這對于這個(gè)用例來說還不夠優(yōu)化,所以我可能會(huì)使用 a ConcurrentHashMapand在包裝器對象中滾動(dòng)我自己的緩存computeIfAbsent( ),以便現(xiàn)有 Logger 對象的檢索不會(huì)阻止其他對象。


所以我的模式是:


Logger logger = loggersPerClass.get(callerClassName);

if (logger == null) {

    logger = loggersPerClass.computeIfAbsent(callerClassName, k -> LogManager.getLogger(callerClass));

}


查看完整回答
反對 回復(fù) 2023-09-20
  • 1 回答
  • 0 關(guān)注
  • 121 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號