您好,登錄后才能下訂單哦!
本篇內容介紹了“Java日志處理的方法有哪些”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
日志處理
1. 【強制】應用中不可直接使用日志系統 (Log 4 j 、 Logback) 中的 API ,而應依賴使用日志框架SLF 4 J 中的 API ,使用門面模式的日志框架,有利于維護和各個類的日志處理方式統一。
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
private static final Logger logger = LoggerFactory.getLogger(Abc.class);
2. 【強制】日志文件推薦至少保存 15 天,因為有些異常具備以“周”為頻次發生的特點。
3. 【強制】應用中的擴展日志 ( 如打點、臨時監控、訪問日志等 ) 命名方式:
appName _ logType _ logName . log 。 logType :日志類型,推薦分類有
stats / desc / monitor / visit 等 ;logName :日志描述。這種命名的好處:通過文件名就可知道日志文件屬于什么應用,什么類型,什么目的,也有利于歸類查找。
正例: mppserver 應用中單獨監控時區轉換異常,如:
mppserver _ monitor _ timeZoneConvert . log
說明:推薦對日志進行分類,如將錯誤日志和業務日志分開存放,便于開發人員查看,也便于通過日志對系統進行及時監控。
4. 【強制】對 trace / debug / info 級別的日志輸出,必須使用條件輸出形式或者使用占位符的方式。
說明: logger . debug( " Processing trade with id : " + id + " and symbol : " + symbol);如果日志級別是 warn ,上述日志不會打印,但是會執行字符串拼接操作,如果 symbol 是對象,會執行 toString() 方法,浪費了系統資源,執行了上述操作,最終日志卻沒有打印。
正例: ( 條件 )
if (logger.isDebugEnabled()) {
logger.debug("Processing trade with id: " + id + " and symbol: " + symbol);
}
正例: ( 占位符 )
logger.debug("Processing trade with id: {} and symbol : {} ", id, symbol);
5. 【強制】避免重復打印日志,浪費磁盤空間,務必在 log 4 j . xml 中設置 additivity = false 。
正例: <logger name="com.taobao.dubbo.config" additivity="false">
6. 【強制】異常信息應該包括兩類信息:案發現場信息和異常堆棧信息。如果不處理,那么通過關鍵字 throws 往上拋出。
正例: logger.error(各類參數或者對象 toString + "_" + e.getMessage(), e);
7. 【推薦】謹慎地記錄日志。生產環境禁止輸出 debug 日志 ; 有選擇地輸出 info 日志 ; 如果使用 warn 來記錄剛上線時的業務行為信息,一定要注意日志輸出量的問題,避免把服務器磁盤撐爆,并記得及時刪除這些觀察日志。
說明:大量地輸出無效日志,不利于系統性能提升,也不利于快速定位錯誤點。記錄日志時請思考:這些日志真的有人看嗎?看到這條日志你能做什么?能不能給問題排查帶來好處?
8. 【參考】可以使用 warn 日志級別來記錄用戶輸入參數錯誤的情況,避免用戶投訴時,無所適從。注意日志輸出的級別, error 級別只記錄系統邏輯出錯、異常等重要的錯誤信息。如非必要,請不要在此場景打出 error 級別。
“Java日志處理的方法有哪些”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。