🧩 為什麼系統會一直印訊息?新手也能懂的「程式 Log 設定」完整教學

📌 前言:

你是否曾經遇過這種情況?

  • 系統一啟動,畫面就一直跳出一堆英文訊息
  • 有時訊息多到根本找不到錯誤
  • 有時卻什麼都沒顯示,明明系統壞了

其實,這些問題大多來自一個關鍵設定:
👉 Logging(系統紀錄訊息的規則)

這篇文章會用 完全不需要程式背景 的方式,帶你一步步理解:

  • 什麼是 Logging?
  • 為什麼要分等級?
  • 為什麼「開發中」跟「正式上線」要用不同設定?
  • 工程師實際是怎麼設計 Logging 的?

🧠 一句話先懂什麼是 Logging

Logging 就像是系統在寫日記

系統會把「發生了什麼事」記錄下來,例如:

  • 我現在啟動了
  • 有人連進來了
  • 這個功能出錯了
  • 系統快要當掉了

工程師就是靠這些「日記」來:

  • 找 Bug
  • 查錯誤
  • 確認系統是否正常

📊 為什麼 Log 要分「等級」?

想像你在寫日記,有不同重要程度:

等級 白話意思
Trace 超級瑣碎(幾乎不用)
Debug 給工程師除錯用
Info 一般狀態說明
Warning 有點怪,但還能跑
Error 出錯了
Critical 快掛了

📌 重點概念

設定 Log 等級 = 決定「什麼程度的事情才要記下來」


🧪 範例一:適合「開發中」的設定(訊息很多)

開發時,我們希望 看到越多細節越好

🔧 範例設定(已全新改寫)

{
"SystemLogging": {
"Levels": {
"General": "Debug",
"Framework": "Info",
"Startup": "Info"
}
}
}

👶 白話解釋

  • General: Debug
    👉 自己寫的功能,連很細的過程都會記下來
  • Framework: Info
    👉 系統框架的正常行為會顯示
  • Startup: Info
    👉 系統啟動、關閉時會顯示訊息

🔍 實際效果

  • 畫面會顯示很多訊息
  • 很適合:
    • 除錯
    • 學習系統流程
    • 查「為什麼沒照我想的跑」

🏢 範例二:適合「正式上線」的設定(安靜穩定)

系統上線後,最怕訊息太多

🔧 範例設定(已全新改寫)

{
"SystemLogging": {
"Levels": {
"General": "Info",
"WebCore": "Warning"
}
}
}

👶 白話解釋

  • General: Info
    👉 只記錄「重要但正常」的事情
  • WebCore: Warning
    👉 系統內部的小動作不顯示,除非真的有問題

🔍 實際效果

  • 訊息少、乾淨
  • 真正有問題才會跳出
  • 非工程師也能看懂 Log

⚖️ 兩種設定差在哪?一張表秒懂

比較項目 開發用 正式上線
訊息多寡 非常多 很少
是否顯示除錯細節
效能影響 較高
適合誰 工程師 維運 / 客戶

🚨 為什麼不能在正式環境開「Debug」?

原因很實際:

  1. 效能變慢
  2. Log 檔暴增
  3. 可能洩漏系統資訊
  4. 錯誤反而更難找

👉 所以工程師通常會說一句話:

「Debug 只留在開發環境」


🧩 工程師實務最佳做法

✔ 分環境設定

  • 開發環境:看得清楚
  • 測試環境:接近正式
  • 正式環境:只留必要訊息

✔ 訊息給「人」看,不只給電腦看

  • Log 要能讓 下一個接手的人看懂
  • 不只是堆英文而已

🎯 結語:你不需要懂程式,也該懂 Logging

即使你是:

  • PM
  • 系統使用者
  • 技術主管
  • 剛入行的新手

只要你碰系統,Logging 就是你理解系統狀態的窗戶

如果你能看懂 Log:

  • 問題會少一半
  • 溝通會快很多
  • 系統也會更穩定

留言

這個網誌中的熱門文章

🔍Vue.js 專案錯誤排查:解決 numericFields is not defined 與合併儲存格邏輯最佳化

🖥️遠端桌面連線完整新手指南:Windows RDP、Chrome Remote Desktop、AnyDesk、TeamViewer 一次搞懂

🔎EF Core 連 Oracle 出現 ORA-00600 [kpp_concatq:2] 的完整排錯指南(含 EF Core ToString/CultureInfo 錯誤)