java中使用log4j如何不用每次調(diào)用都聲明一下?
問題描述
每次寫個新的類,就要在下面聲明下:
private static Logger logger = Logger.getLogger(Test.class);
這樣的話不是很麻煩嗎?有沒有什么辦法,把Logger設(shè)置成可以靜態(tài)調(diào)用的類,直接調(diào)用info,error等方法,同時還可以打印出當(dāng)前類、線程號等信息?
問題解答
回答1:你大可以簡單封裝一下實(shí)現(xiàn)你要的目的,比如建個類把Logger封裝進(jìn)去,暴露幾個靜態(tài)接口出來。至于為什么很多代碼書寫的時候?qū)懗蓀rivate static Logger logger = Logger.getLogger(Test.class);,其實(shí)主要是為了提高日志的靈活性、準(zhǔn)確性等。
回答2:看看這個 /a/11...
回答3:聲明log是因?yàn)樗梢远x不同的logger name可以通過logger name定制自己的輸出方式, 比如level, appender...等
如果你的日志是以相同的方式處理那你完全可以聲明公共的靜態(tài) log 對象, 需要的地方使用該log也不存在重復(fù)聲明的情況了.如:
import static xxx.GlobalLogs.log;log.debug('...');log.info('...');//...
當(dāng)然你還可以使用 lombok 的方式來簡化你的代碼.
相關(guān)文章:
1. 如何解決Centos下Docker服務(wù)啟動無響應(yīng),且輸入docker命令無響應(yīng)?2. 我在centos容器里安裝docker,也就是在容器里安裝容器,報錯了?3. objective-c - IOS 分享到微信 提示 應(yīng)用消息數(shù)據(jù)錯誤4. android - 使用百度sdk調(diào)用SDKInitializer.initialize(this)時報錯?5. javascript - 微信h5發(fā)送圖文信息,部分設(shè)備點(diǎn)擊“發(fā)送”按鈕時沒反應(yīng),問題較難重現(xiàn),如何能找到可能存在問題的點(diǎn)?6. javascript - 音樂播放器-圖片旋轉(zhuǎn)7. android - 為 AppBarLayout 設(shè)置的背景圖片 TransitionDrawable 為什么只在第一次打開的時候有效?8. javascript - js中遞歸與for循環(huán)同時發(fā)生的時候,代碼的執(zhí)行順序是怎樣的?9. MySQL timestamp的默認(rèn)值怎么設(shè)置?10. docker 17.03 怎么配置 registry mirror ?

網(wǎng)公網(wǎng)安備