HttpClient 在執行時會把所有發送和接收的資料全部以 debug 等級的 log 輸出到 log4j
一般在做 JSON 處理時還好,這個 log 大概對於 debug 蠻有幫助的
但如果是在實作檔案上傳或者下載時,印出來的 log 等於是把要上傳或下載的檔案全部輸出到 log4j,是相當驚人的文字量
而且有時候會把 eclipse 弄到當機...。
如果想要讓 HttpClient 的 log 消失,其實是可以直接在 log4j 的設定檔上面設定的
log4j 有支援針對特定類別做個別的輸出設定,因此可以很方便地指定各種不同 log 該出現或不出現。
因為在我的環境中,HttpClient 的內容都是印在 org.apache.http.wire 這個類別,因此目標是設定 log4j 忽略這個類別的 log。
如果設定檔是 log4j.properties,則可以加入以下的設定,要求 log4j 針對 org.apache.http.wire 只顯示 WARNING 等級以上的 log。
1 |
log4j.logger.org.apache.http.wire=WARN |
如果設定檔是 XML 格式時,則是把設定寫在 log4j:configuration 標籤內,例如:
1 2 3 4 5 6 |
< logger name = "org.apache.http.wire" > <!-- Print only messages of level warn or above in the package org.apache.http.wire --> < level value = "warn" /> </ logger > </ log4j:configuration > |
參考資料:
1、Disable HttpClient logging
2、Log4j XML Configuration Primer
沒有留言:
張貼留言