關于日志的123

寫在前面:

? ? 關于日志其實有很多想說的,不過將自己整理的文檔轉化為Blog還是比較花時間的,偶有疏漏,請多包涵。

? ? 本篇文章所講均只止于Java。

?

日志的作用:

? ? 1.定位問題,對于一個系統而言,總是會有些意外發生,例如系統接口被抓,被薅羊毛,如果在方法內部記錄好日志,那么就可以定位問題發生的位置、原因、事故對象。

? ? 2.性能優化,對于一些報表或者其他占用IO比較大的業務,通過日志可以進行詳略得當的優化,這在開發時間比較緊的時候,能夠排出先后順序,對于搶占排期有至關重要的作用。

?

常用日志級別:

? ? 1.INFO:對于系統運行期的數據進行記錄,合格INFO信息應該對于具有高需求的數據進行記錄,如金額、積分變化,用戶的個人數據等。另外對于改變應用狀態的信息也應該記錄,例如數據庫更新,其他系統交互等。

? ? 2.DEBUG:對于系統開發時,測試的數據進行記錄,有些時候我們調試的數據并不好找,可以考慮通過Debug的日志信息進行定位,這些不好找的信息包括:其他系統交互,線城池調用等。

? ? 3.ERROR:這個級別的信息必須被處理,一般情況下,出現這種信息都會造成系統功能癱瘓。

? ? 4.WARING:這個級別的信息可以忍受,但是應該被關注,在有時間的時候,進行業務評估,考慮是否需要修復處理。

? ? 以上是常用的四個日志級別,另外還有TRACE等沒有介紹,在日常使用時,不同級別的日志最好輸出到不同的目錄當中,按照日期分類這樣在排查問題時會非常有效。

?

日志的使用:

? ? 1.日志對象的生成:統一使用工廠方式創建對象,減少資源開銷并防止意外篡改。

? ? 2.日志的使用:

? ? ? ? 推薦使用Slf4j,他的可變參數對于提升性能和減少書寫非常有作用,此外推薦插件Lombok,不僅可以通過@Slf4j省去創建日志對象的煩惱,同時可以節省Pojo的構造函數創建以及getter/setter方法。

? ? ? ? 必須注意,如果使用了Lombok,必須保證其他開發者也裝了這個插件,不然會造成毀天滅地的后果。

? ? 3.注意:

? ? ? ? 3.1.debug/info級別的信息,如果業務較復雜,必須添加 isXxxEnabled() 判斷,可以減少日志的無效輸出,提升效率。

? ? ? ? 3.2.error和warn級別的信息,如果導致業務不正常,使用error,如果錯誤可預期,使用warn。

? ? ? ? 3.3.異常捕獲之后應該處理,也就說,打印錯誤信息。捕獲異常范圍過大和捕獲不處理,都是非常不負責任的行為。

? ? ? ? 3.4.敏感信息接口應該記錄日志。

? ? ? ? 3.5.日志信息打印要防止因為打印信息問題而導致的報錯,例如NullPointerException。

? ? ? ? 3.6.日志的分類很重要,應該避免將所有日志輸出到一個文件里;同時,日志中的信息應該脫敏并且盡量清晰明了,過于冗余和過于簡單都是不可取的。

?

總結:

? ? 好的日志可以幫助我們快速定位問題,在系統性能優化中提供可靠的數據幫助分析,在日常開發中,我們應該對于日志信息有更多地重視。本文僅僅是一篇入門級的簡要概述,以期起到拋磚引玉的作用。在日常開發中,日志還有很多需要注意的地方,比如參數化的多參數支持,日志的具體業務分類,這些因應個人環境不同,會有不同的變化。

? ?希望這篇文章能對閱覽的你產生幫助,下期見。

轉載于:https://www.cnblogs.com/shxz/p/9979628.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450653.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450653.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450653.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

研究顯示每天工作超8小時得心臟病概率增加80%,生命很重要,工作不要那個累。

每天工作超過8小時的人患心臟病的風險最高可增加80%(資料圖) 據英國《每日郵報》9月12日報道,芬蘭職業保健研究所的科學家們近日進行了一項研究,他們發現每天工作超過8小時的人患心臟病的風險最高可增加80%。 研究人員表示,長時間的工作是許多…

SVN介紹

1.SVN介紹SVN是一個跨平臺的開源的版本控制系統,svn版本管理工具管理著隨時間改變的各種數據,這些數據放置在一個中央檔案庫(repository)中,svn會備份并記錄每個文件每一次的修改、更新、變動。這樣可以把任意一個時間…

記錄 Annotation processing is not supported for module cycles.

報錯:Error:java: Annotation processing is not supported for module cycles. Please ensure that all modules from cycle [A,B] are excluded from annotation processing 我是想啟動兩個 maven工程,相互作為服務提供方和消費方,于是在p…

沉淀再出發:Spring的架構理解

沉淀再出發:Spring的架構理解 一、前言 在Spring之前使用的EJB框架太龐大和重量級了,開發成本很高,由此spring應運而生。關于Spring,學過java的人基本上都會慢慢接觸到,并且在面試的時候也是經常遇到的,因為這個技術極…

用Python進行機器學習所需環境的配置(轉)

源:用Python進行機器學習所需環境的配置

成功創業者所需的能力

1. 富有遠見,樂在其中。 如果你能很好地預見自己的公司所在領域在很多年后的樣子,這能保證你在該領域取得長久的發展。很多人能在商業領域取得成功并不是因為他們徹底的廢舊立新,而是因為他們乘風破浪,能在現有的基礎上有所改進和…

記錄:non-compatible bean definition of same name and class [com.XXX.XXX]

啟動 springBoot 工程時報錯: Caused by: org.springframework.context.annotation.ConflictingBeanDefinitionException: Annotation-specified bean name userLogAspect for bean class [com.foreveross.security.config.UserLogAspect] conflicts with existing,…

「日常訓練」 Genghis Khan the Conqueror(HDU-4126)

題意 給定\(n\)個點和\(m\)條無向邊(\(n\le 3000\)),需要將這\(n\)個點連通。但是有\(Q\)次(\(Q\le 10^4\))等概率的破壞,每次破壞會把\(m\)條邊中的某條邊的權值增大某個值,求\(Q\)次破壞每次將…

數學家吳文俊批判“中國式奧數”:害人害數學

奧數震動了兩位最高科技獎得主 一談起“奧數”,國內當今數學界的泰斗級人物吳文俊院士就急了。 他在沙發上挺直了腰,瞪大眼睛,伸出手掌指指點點:“是害人的,害數學!” “什么奧林匹克?沒這回事&…

CentOS 7 搭建CA認證中心實現https取證

CA認證中心簡述CA :CertificateAuthority的縮寫,通常翻譯成認證權威或者認證中心,主要用途是為用戶發放數字證書功能:證書發放、證書更新、證書撤銷和證書驗證。作用:身份認證,數據的不可否認性端口&#x…

簡單明了 - Git 使用超詳細教程

見:http://www.admin10000.com/document/5374.html 一:Git是什么? Git是目前世界上最先進的分布式版本控制系統。 二:SVN與Git的最主要的區別? SVN是集中式版本控制系統,版本庫是集中放在中央服務器的&…

FileStream功能被禁用

今天還原數據庫,遇到如下問題: 網上的解決方法大概是三種: 1、講數據庫備份文件權限設置為“EventOne” 2、打開SQLServer配置管理器,選中服務然后右擊“屬性”將FileStream相關勾選并重啟當前實例服務 3、設置數據庫訪問級別 USE…

btree索引和hash索引的區別(待更新)

btreehash用于使用 , >, >, <, < 或者 BETWEEN 運算符的列比較。如果 LIKE 的參數是一個沒有以通配符起始的常量字符串的話也可以使用這種索引僅僅能滿足"","IN"和"<>"查詢

window.parent,top,window.self,parent,opener

2019獨角獸企業重金招聘Python工程師標準>>> 在應用有frameset或者iframe的頁面時&#xff0c;parent是父窗口&#xff0c;top是最頂級父窗口&#xff08;有的窗口中套了好幾層frameset或者iframe&#xff09;&#xff0c;self是當前窗口&#xff0c; opener是用ope…

ALM 中查看某個 test 的更改 history 歷史

ALM 中要查看某個 test 更改歷史&#xff0c; 需要下面兩個表&#xff1a;AUDIT_LOG and AUDIT_PROPERTIES------- Get Test modification history -------- ---- In ALM, 857, if filter out test case named 26169502, check its History. In the history, for the node of d…

編譯器vs.代碼 誰之過

摘要&#xff1a;編譯器是將程序語言編譯成機器語言的一種高級程序。如今許多編譯器越發智能&#xff0c;在編譯不通過的情況&#xff0c;你的代碼甚至都無法運行&#xff0c;那么到底是編譯的問題還是您的代碼問題呢&#xff1f; 許多程序員喜歡抱怨編譯器報出的各做錯誤&…

Android 在 Google 開發者大會上發布了哪些更新? | Google 開發者大會 2018

有哪些新的 Android 系統特性 Google Play 上的 targetVersion 要求 2018年8月 新應用發布必須為26或者更高2018年11月 升級現有應用必須為26或者更高2019年之后 新發布或者升級應用必須為一年內發布的 Android 版本工信部已經出臺相應的政策&#xff0c;中國主流的應用市場也已…

兩個不同的數據庫如何跨庫事務

首先我們要明白同一實例&#xff0c;簡單來說就是一個ip&#xff0c;如果兩個數據庫位于同一個ip&#xff0c;就是同一實例。其實實例并不相當于ip&#xff0c; 他其實相當于服務&#xff0c;也就是serve。 這樣的兩個或多個就可以跨庫事務&#xff0c;比如 begin; insert in…

鏈表排序(冒泡、選擇、插入、快排、歸并、希爾、堆排序)

參考http://www.cnblogs.com/TenosDoIt/p/3666585.html 插入排序&#xff08;算法中是直接交換節點&#xff0c;時間復雜度O&#xff08;n^2&#xff09;,空間復雜度O&#xff08;1&#xff09;&#xff09; 1 class Solution {2 public:3 ListNode *insertionSortList(Lis…

zookeeper使用和原理探究

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 zookeeper介紹 zookeeper是一個為分布式應用提供一致性服務的軟件&#xff0c;它是開源的Hadoop項目中的一個子項目&#xff0c;并且根據…