程式設計師因重複記錄日誌撐爆ELK被辭退!

2020-12-11 51CTO

程式設計師因重複記錄日誌撐爆ELK被辭退!

由於日誌配置繁雜,很多同學喜歡直接cv其他項目或網上博客的配置文件,而不仔細研究每個配置項。最常見的就是重複記錄日誌,這不但給查看和統計帶來不必要麻煩,還會增加磁碟和日誌收集系統負擔。

作者:JavaEdge來源:JavaEdge|2020-12-11 06:49

由於日誌配置繁雜,很多同學喜歡直接cv其他項目或網上博客的配置文件,而不仔細研究每個配置項。最常見的就是重複記錄日誌,這不但給查看和統計帶來不必要麻煩,還會增加磁碟和日誌收集系統負擔。

下面看幾個常見導致該錯誤的案例,大家引以為戒,避免被辭退。

1 logger配置繼承關係錯誤

圖片

定義方法記錄debug、info、warn、error四種日誌:

Logback配置

配置看沒啥問題,但執行方法後明顯記錄重複了:

錯因

CONSOLE這個Appender同時掛載到倆Logger,定義的,由於定義的繼承自,所以同一日誌既會通過logger記錄,也會發送到root記錄,因此應用包下日誌出現重複。

如此配置的初衷是啥?

本想實現自定義logger配置,讓應用內日誌暫時開啟DEBUG級別。

其實,這無需重複掛載Appender,去掉下掛載的Appender即可

  1. <logger name="org.javaedge.logging" level="DEBUG"/> 

若自定義需把日誌輸出到不同Appender,比如

  • 應用日誌輸出到文件app.log
  • 其他框架日誌輸出到控制臺

可設置的additivity屬性為false,就不會繼承 Appender

2 配置LevelFilter錯誤

記錄日誌到控制臺時,將日誌按級別記錄到倆文件

執行結果

info.log 文件包含INFO、WARN和ERROR三級日誌,不符預期

error.log包含WARN和ERROR倆級別日誌,導致日誌重複收集圖片

事故問責

一些公司使用自動化ELK方案收集日誌,日誌會同時輸出到控制臺和文件,開發人員在本地測試不會關心文件中記錄的日誌,而在測試和生產環境又因為開發人員沒有伺服器訪問權限,所以原始日誌文件中的重複問題難以發現。

到底為何重複?

ThresholdFilter源碼解析

圖片

  • 當日誌級別 ≥ 配置級別 返回NEUTRAL,繼續調用過濾器鏈上的下個過濾器
  • 否則返回DENY,直接拒絕記錄日誌

該案例我們將 ThresholdFilter 置 WARN,因此可記錄WARN和ERROR級日誌。

LevelFilter

用於比較日誌級別,然後進行相應處理。

  • 若匹配就調用onMatch定義的處理方式:默認交給下一個過濾器處理(AbstractMatcherFilter基類中定義的默認值)
  • 否則調用onMismatch定義的處理方式:默認也是交給下一個過濾器

和ThresholdFilter不同,LevelFilter僅配置level無法真正起作用。

由於未配置onMatch和onMismatch屬性,所以該過濾器失效,導致INFO以上級別日誌都記錄了。

修正

配置LevelFilter的onMatch屬性為ACCEPT,表示接收INFO級別的日誌;配置onMismatch屬性為DENY,表示除了INFO級別都不記錄:

如此,_info.log文件只會有INFO級日誌,不會再出現日誌重複。

本文轉載自微信公眾號「 JavaEdge」,可以通過以下二維碼關注。轉載本文請聯繫 JavaEdge公眾號。

【責任編輯:

武曉燕

TEL:(010)68476606】

點讚 0

相關焦點

  • Kubernetes ELK 日誌收集
    在Pod中包含一個sidecar容器來收集日誌直接通過應用程式將日誌信息推送到採集後端 (例kafka,es等)節點級別的日誌記錄節點日誌採集 通過在每個節點上運行一個日誌收集的Agent來採集數據,日誌採集agent是一種專用工具,用於將日誌數據推送到統一的後端
  • 日誌的藝術 | 好文推薦
    相關文章:Python 中更優雅的日誌記錄方案Logbook:Python 快速日誌記錄實踐文 | xybaby推薦 | 編程派公眾號微信號:codingpy程式設計師學習每一門語言都是從列印「hello world」開始的,日誌也是新手程式設計師學習、調試程序的一大利器
  • 程式設計師接私活遭公司辭退,休息時間也屬於公司麼?
    科技的發展讓許多企業搭上了快速發展的列車,作為技術的支柱,程式設計師又是科技企業的中堅力量。對於一個技術高超的程式設計師,公司都會給與高額的工資和不錯的福利。但是程式設計師接私活的現象也讓很多公司頭疼,有不少程式設計師因為工作熟練之後,就有更多的時間做其他事情,接私活成了很多程式設計師的選擇。
  • 【英語輕鬆學】《Elk yelps!》麋鹿大喊大叫
    The elk. 有一頭麋鹿。 The elk fell. 這頭麋鹿摔了一跤。
  • 日誌系統新貴 Loki,確實比笨重的 ELK 輕
    我們都知道,k8s的基本單位是pod,pod把日誌輸出到stdout和stderr,平時有什麼問題我們通常在界面或者通過命令查看相關的日誌,舉個例子:當我們的某個pod的內存變得很大,觸發了我們的alert,這個時候管理員,去頁面查詢確認是哪個pod有問題,然後要確認pod內存變大的原因,我們還需要去查詢pod的日誌,如果沒有日誌系統,那麼我們就需要到頁面或者使用命令進行查詢了:
  • APP更新日誌都開始作詩了,現在程式設計師這麼拼?
    NEXTMIND提到蘋果商店中APP的更新日誌,往往都是一些簡明扼要的描述,舉個例子,微信最新版本是這麼寫的:「收藏裡的筆記可保存為圖片、分享至朋友圈。」但就是這麼一個更新日誌,也可以玩出花樣,比如蘋果APP商店中的網易嚴選,在22個小時前就寫了一首詩:當然,這可能是程式設計師寫的,也可能是產品經理寫的,但無論是誰,不得不承認真挺有才。
  • 從烏東德水電站深入程序日誌的世界
    日誌的作用:追蹤程序運行過程,快速定位問題記錄分析運行數據,便於後續版本統計優化分析用戶行為數據,便於做用戶運營ELK常用架構Prometheus套件記錄日誌的方式:普通程式設計師:Log.debug(),哪裡有問題哪裡debug。
  • 程式設計師因不會給產品取英文名,被小領導在工作群貶低,程式設計師怒懟
    做過程式設計師的都知道,有時候經常需要給產品取一些英文名字,因為很多產品功能是很豐富的,用英文名的話還真不一定能那麼準確的翻譯出來,而且有些產品是冷門和比較偏僻的,想要取個準確的英文名就更難了。於是很多程式設計師在取名時可能會用拼音來代替。最近在職場論壇上看到這樣一個帖子:程式設計師不會給產品起英文名被領導罵後怒懟:你來試試,結果被辭退後蒙了!
  • ToDoList 6.9.1 發布,程式設計師日常記錄軟體 - OSCHINA - 中文開源...
    ToDoList 6.9.1 發布,此版本現已提供下載:改進記錄:New
  • 聽說你在辭退名單上?別慌,做好這幾點從容應對
    但是,因為疫情原因,沒想到自己也在辭退名單之列。因為工作那麼長時間,第一次聽說辭退,剛好我又是從事人力資源工作的,所以就諮詢到我,希望我能給他一些建議,怎麼應對被動辭職。對於因疫情的原因,被公司辭退,也是沒有辦法的事,公司畢竟不是慈善機構,它存在的首要目的就是為了賺錢,當公司入不敷出的時候,裁員瘦身是必然的。
  • ToDoList 6.9 Beta 發布,程式設計師日常記錄軟體 - OSCHINA - 中文...
    >Added optional confirmation dialog to time trackingAdded close buttons to tasklist tabsAdded blank line to single-selection droplists todolist是一款適合程式設計師管理日常工作的日誌記錄軟體
  • seci-log 開源日誌分析軟體發布了 - OSCHINA - 中文開源技術交流...
    從我了解的情況下,這部分目前還沒有比較有效的開源或者免費工具供大家使用,現在elk用的比較多,但大多數情況下都不太適合中小公司,門檻太高。因此本公司針對這種情況,專門開發了賽克藍德日誌分析軟體,並開源了web管理端。首先上一張門戶圖:
  • 列印日誌竟然只曉得 Log4j?
    畢竟,性能是一個程式設計師優不優秀的重要考量。01、為什麼需要在 Java 中列印日誌System.out.println() 恐怕是我們在學習 Java 的時候,最常用的一種列印日誌的方式了,幾乎每個 Java 初學者都這樣幹過,甚至一些老鳥。
  • 程式設計師們到底該不該重複造輪子?
    IT行業中一直流傳著一句話:「不要重複造輪子」。如果不是程式設計師,看到這樣一句話,一定會覺得有些莫名其妙。這程式設計師,咋還管造輪子的事兒呢?那匯智妹就來跟大家叨叨一下,程式設計師口中的「輪子」到底是個啥?「重複造輪子」這幾個字的英文是「Reinventing the wheel」,更加確切的翻譯是「重複發明輪子」。圓形車輪已經是大家公認最好的了,可你非要自己發明另一種形狀的輪子。這就叫「重複發明輪子」。類比到IT行業中,就是明知道你做的不可能比前輩做得更好,卻仍然堅持要做。比如一些框架、庫、工具等等。
  • 如何使用nRF Connect 的輔助日誌工具nRF Logger記錄APP日誌?
    概述在藍牙開發中,有一個日誌記錄輔助工具nRF Logger,是專門結合nRF Connect 使用的。當APP在後臺進行工作的時候,可以使用nRF Logger工具進行查看。目前這個是開源了的,可以實現自己的日誌統計。1工具欄位置2nRF Logger首頁二、在nRF Logger首頁點擊「welcome欄」,可以打開日誌界面。如圖(3具體的日誌界面)3具體的日誌界面三、在日誌界面的右上角「INFO」可以選擇六種日誌的類型。
  • 程式設計師如何改變屌絲形象?做到這4點,女神跟你走!
    對於程式設計師,網絡上嘲笑程式設計師的段子俯拾皆是,簡直發展成了一種亞文化現象。什麼「一百位程式設計師只有一種樣子」,「話少錢多死得早,毫無情趣女友跑」等等。這一個個的段子,傷了多少程式設計師的心。一開始,對這種現象,我也無法反駁,因為我悲哀的發現,現實生活中,好多程式設計師確實是這個樣子的。程式設計師們一大早背著包擠上地鐵,在人群中如潮水般湧入地鐵站的前一刻,已經開始重複著昨天的生活。
  • 2017年程式設計師工作計劃
    2017年程式設計師工作計劃一1.2017年程式設計師工作計劃二1、總結自己一天任務的完成情況  最好的方式是寫工作日誌,把自己今天完成了什麼事情,遇見了什麼問題都記錄下來,日後翻看好處多多3、考慮自己一天工作中失誤的地方,並想出避免下一次再犯的方法  出錯不要緊,最重要的是不要重複犯相同的錯誤,那是愚蠢。4、考慮自己一天工作完成的質量和效率能否還能提高  一天只提高1%,365天你的效率就能提高多少倍你知道嗎?(1+0.01)^365=37倍。
  • 95後畢業生去當程式設計師,簡歷造假被識破,公司命令HR:立馬辭退!
    95後畢業生去當程式設計師,簡歷造假被識破,公司命令HR:立馬辭退!找工作成為很多畢業生的一大難題,有些畢業生為了能找到一個好工作,都故意將自己的簡歷造假。網上有位95後的畢業生,在畢業後去找了幾份工作,工資都非常低,他為了拿高工資,辭了之前的那些工作,選擇轉型去當程式設計師,將自己的簡歷造假,結果被識破,公司命令HR:立馬辭退!如今的社會上大量造假的現狀確實存在,但是背後的原因也確實是學歷不夠的人們的無奈,如果不造假連展示自己的機會都沒有。
  • python乾貨分享:使用logging記錄日誌信息
    僅僅將棧信息輸出到控制臺是遠遠不夠的,更為常見的是使用日誌保存程序運行過程中的相關信息,如運行時間、描述信息以及錯誤或者異常發生時候的特定上下文信息。logging lib包含以下4個主要對象:(1) logger logger是程序信息輸出的接口,它分散在不同的代碼中使得程序可以在運行的時候記錄相應的信息.並根據設置的日誌級別或filter來決定哪些信息需要輸出,並將這些信息分發到其關聯的handler
  • 要提拔時被發現「有前科」遭公司辭退,外賣公司查詢員工犯罪記錄...
    外送員劉某工作勤懇,公司將他提拔為靜安店店長,可突然有一天,他竟然被公司辭退了,理由是「嚴重違反公司規章制度」。一頭霧水的劉某多方打聽得知,自己被辭退的原因竟是,入職時未告知公司自己未成年時期的刑事案件記錄。 公司的行為合法嗎?劉某憤然起訴。後來,普陀區法院作出一審判決,外賣公司違法解除雙方的勞動關係,理應支付賠償金。