iT邦幫忙

0

關於印 Log 的正確姿勢與疑問

log

上網查詢關於LOG的一些作法 ex:https://codertw.com/android-%E9%96%8B%E7%99%BC/26371/

大多都是提到:
1.分級LOG
2.被關掉的debug log一樣要先做判斷
3.用非同步輸出LOG方式比同步輸出方式效能要高

最近撰寫程式的程式,為確保有收到證據,收到會記錄一筆UUID,印在console上,
但是由於一秒內就會收到多筆紀錄,所以LOG會很多很多很多....
以下有一些關於印LOG的疑問

1.程式中有一些標記debug log,但預設只會開啟Info log ,是不是所有都要加上判斷,
還是如果資料內容過小就可以忽略?

2.印在console還是檔案內好?速度與CPU的影響是什麼?

3.有查到用非同步輸出LOG方式比同步輸出方式效能要高,
沒應用過,想知道這樣輸出的LOG是否會混亂?
(是否需要加一些時間戳或是UUID來幫助辨別)

4.因為是使用微服務docker,且服務眾多,看過有人設計使用打LOG API去把LOG存在DB當中,用於集中化查詢,這樣做法是常用的嗎?是否有什麼考量? 效能是否更慢

以上幾種還沒時間一一實作驗證,想請問各位有經驗的前輩實務經驗與幫助,
謝謝!

1 個回答

0
浩瀚星空
iT邦超人 1 級 ‧ 2020-09-18 16:14:20

你的問題我比較難一項一項做解釋。
我只能告訴你一些基本的。

1.儲存到檔案的優勢:
基本第一效能比較不容易被佔用。第二就是方便用vim處理。
缺點就是統計過濾不太容易。如沒搭配記錄管理器的話。或是規劃設計上不好的況下。
常會發生容量爆掉的問題。
一般應用上的記錄會比較常用這種。

2.儲存資料庫的優勢:
第一不用說了,當然就是為了統計方便了。
在程式的規劃上也容易一些。自定義記錄也方便點。
一般程式上的記錄比較常用這種。

也就是說儲存資料庫跟檔案都有其優缺點。沒辦法說哪種好還是哪種壞。
記錄一般來說,當然能盡量記錄是最好的。
有些應用本身就有記錄的開關存在。像這種的就比較不需要另外寫記錄。
且一般來說本身的記錄管理器都會自動幫你管理容量。所以很少人會去擔心。

這邊我認為你想要問的因該還是偏向於程式上的記錄問題。
你剛好也有說到所謂的log api。
其實這種的反而不操效能。(前提是你不是api同一台機器)
這是一種手法。讓記錄管理統一處理。但又不影響原來的機器。
不過這樣的做法其實也是有缺點。很容易發生loss記錄的情況。
所以一般應用在不需要準確記錄的資料上。

總之,我能說的大約只有這樣。

nagiMemo iT邦新手 5 級 ‧ 2020-09-28 20:29:35 檢舉

了解 謝謝分享!/images/emoticon/emoticon41.gif

我要發表回答

立即登入回答