程式設計師的修養 如何寫日誌 logging

2022-09-20 01:06:12 字數 1966 閱讀 2450

在程式中寫日誌是一件非常重要,但是很容易被開發人員忽視的地方。寫好程式的日誌可以幫助我們大大減輕後期維護壓力。

在實際的工作中,開發人員往往迫於的巨大時間壓力,而寫日誌又是乙個非常繁瑣的事情,往往沒有引起足夠的重視。

如果我們的開發人員在一開始就養成乙個良好的習慣將非常有幫助。並且在實際的工作中也應當為寫日誌預留足夠的時間。

我們為什要寫日誌呢?

一般來講,我們在程式中記錄日誌出自下面幾個方面的需求。

* 記錄使用者操作的審計日誌,甚至有的時候就是監管部門的要求。

* 快速定位問題的根源,

* 追蹤程式執行的過程

* 追蹤資料的變化

* 資料統計和效能分析

* 採集執行環境資料

多數情況下,在我們的程式上線(go live)之後,一旦發生異常,我們要做的第一件事就是要弄清楚當時倒底發生了什麼,

例如:使用者當時做了什麼操作,環境有無異常,資料有什麼變化,是不是反**生,等等。

然後再進一步的確定大致是哪個方面的問題。 確定是程式的問題之後再交由開發人員去重現,研究,提出解決方案。

這個時候日誌就給我們提供了第一手的資料。

在生產環境和測試環境分開的情況下,在開發人員拿到日誌的時候離問題發生已經過去很長時間。

所以清晰詳盡的日誌資訊對於我們迅速定位問題根源就顯得非常重要。它既是我們找尋原因的地圖,也是最直接的證據。

對於稍大一點的系統來講,做維護的人員和開發者通常都不是同一組人,這個過程所花費的時間和人力要遠遠超過開發本身數倍甚至數十倍。

都有哪些人要看日誌?

正如前面所講,產品支援,運維人員,開發人員,測試人員都需要檢視日誌。當然自己也是要看的。

寫日誌有些什麼要求?

上面需求對我們在程式中記錄日誌提出了一定的要求:

* 日誌的可讀性

日誌是給人讀的,不僅僅是讓自己明白同時也要讓沒有接觸過我們源**的其他程式設計師也能夠一目了然。

我常常見到很多同事在日誌中列印特殊的識別符號號,例如 「+++++++++++」,「--------------」和「**********====」,這些符號往往讓人眼花繚亂。他們的本意也僅僅是在自己除錯的時候能一眼就發現這是自己的日誌。既然如此,把自己名字寫入日誌中豈不是更明確?

把日誌分類輸出到不同的檔案中也有利於我們排除干擾,迅速找到我們需要的資訊。

* 日誌的效能

無論我們把日誌寫到檔案還是資料庫,都需要消耗io資源。適當的控制日誌的輸出也有利於提高程式的效能。例如:

盡量避免在在大的迴圈中列印意義不大的日誌內容。

輸出日誌之前最好能判斷日誌的級別(例如. debug前先呼叫isdebugenabled()作出判斷)。

* 占用的磁碟空間

通常,我們都是把日誌寫入磁碟上的日誌檔案中。適當的使用滾動日誌並且定時清除舊檔案是有好處的。

我見過這樣乙個例子,程式執行幾次後就跑不起來了,前幾次都是正常的。怎麼都想不明白程式有什麼問題,最後才發現居然是日誌檔案佔滿了磁碟空間。

在實際的應用**現上g的日誌檔案也往往不少見。要在這樣規模的日誌檔案中找出對解決問題有用的資訊也是一大挑戰。

* 日誌的時效性

有的時候我們並不能及時的發現問題。需要追溯之前的日誌。所以我們是需要保留一段時間以內的日誌便於追溯。

* 日誌的級別

通常我們在產品環境中日誌的級別都在info以上,所以我們必須保證在這樣的情況下程式仍然能夠輸出足夠我們作出判斷的資訊。

* 日誌的內容

我們在寫日誌的時候,需要注意輸出適當的內容。

首先,盡量使用業務相關的描述。我們的程式是實現某種業務的,那麼就最好能描述清楚這個時候走到了業務過程的哪一步。

其次,避免在日誌中輸出一些敏感資訊,例如使用者名稱和密碼。

以及,要保持編碼的一致。如果不能保證就盡量使用英文而不是中文。這樣當我們拿到日誌之後就不會因為看到一堆亂碼而不知所云了。

怎麼樣寫出好的日誌來?

其實寫好日誌並不難,只要我們能在寫**的時候能體會到後面的維護工作的壓力和艱辛,多點關注和理解就一定能做好這件事。

程式設計師如何寫簡歷(附模板)

對於乙個程式設計師來說,簡歷很重要。我身邊就有這麼乙個例子。朋友a和朋友b,都投了一家公司的崗位。友a簡歷被拒,用人的專案組認為簡歷與崗位不匹配。友b簡歷經過我修改之後,不但簡歷過了,還順利的通過了一二三四輪面試,最終拿到offer,順利入職。hr事後表示,這個應聘者 友b 太合適了。然而兩個朋友經...

程式設計師的修養

武功者,包括內功 外功 武術技擊術之總和,有形的動作,如支撐格拒,姿式回環,變化萬千,外部可見,授受較易,晨操夕練,不難熟練,而無形的內功指內部之靈慧素質,即識 膽 氣 勁 神是也,此乃與學練者整個內在世界的學識水平密切相關,是先天之慧跟悟性與後台智慧型的總成,必需尋得秘籍方可煉成。迭代開發,價值優...

程式設計師要如何寫簡歷(附簡歷模板)

馬上就進入求職季了,在簡歷製作方面,這裡提供幾點建議。程式設計師的簡歷力求簡潔明瞭,不用設計上過於複雜,過於花哨。校招生一頁簡歷就夠了,社招的話兩頁簡歷便可。有的校招生說自己的經歷太多了,簡歷要寫出兩三頁,看完之後基本不是內容太多了,就是太囉嗦了,例如校園活動一大堆 既然是面試技術崗位,其他的就一筆...