」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > Python 日誌記錄

Python 日誌記錄

發佈於2024-11-08
瀏覽:702

Logging con Python

日誌,記錄。它是什麼以及如何使用 Python 註冊事件

使用日誌記錄建立日誌使我們能夠在程式碼中獲得許多功能和靈活性。在這篇簡短的文章中,我向您展示了基礎知識和更多內容,以開始將其合併到您的專案中。

什麼是日誌記錄?還有日誌?

日誌記錄是監視事件的一種方式。這些事件透過描述性訊息可見,具有某些變數資訊(某些變數的值或函數的結果)並且具有一定的重要性。
日誌就像Python中的列印,但不同的是它們不一定會印在螢幕上,這些日誌可以保存在已知的檔案中。

我該如何使用它?

我們將使用 Python 自帶的日誌庫:

import logging

logging.basicConfig(
    filename="log-de-hoy.log",
    encoding="utf-8",
    level=logging.DEBUG,
    format="%(asctime)s %(levelname)s %(message)s"
)

def add(a, b):
    try:
        result = a   b
        logging.info(f"Adding {a} and {b}. Result: {result}")
    except TypeError:
        result = None
        logging.error("The values should be numeric")
    return result

print(add(2, 3)) # 5
print(add(2, "3")) # None

如果我們執行此命令,則會產生一個名為 log-de-hoy.log 的檔案:

2023-12-08 11:56:30,544 INFO Adding 2 and 3. Result: 5
2023-12-08 11:56:30,544 ERROR The values should be numeric

解釋

? ?我們開始基本配置:使用logging.basicConfig我們聲明:

  • 檔案名稱:我們想要新增日誌的特定檔案的名稱(例如,名稱是 log-de-hoy.log,但理想情況下它應該有一個帶有當天日期的描述性名稱)
  • 編碼:我們保存每個日誌的格式類型
  • level:我們定義我們想要觀察的等級。不同的等級在他們的文件中,你會看到它們有一個數值,logging.INFO是20。如果我們需要debug,至少我需要10。所以,使用logging.DEBUG我們確保註冊值為 10 及以上的等級。
  • format:記錄日誌的格式,在本例中為訊息層級日期

? ?我們用 level info

記錄總和的結果

? ?我們用level error

註冊一個int和一個string相加的錯誤

為什麼要使用日誌記錄?

也許你已經可以想像了,因為它是一個強大的工具,可以幫助我們快速識別異常。使用它的一些用例是:

  • ?調試與故障排除
  • ?效能監控與分析
  • ?審計與合規性
  • ?安全與異常檢測

完成…

很容易實現,對吧?將其整合到任何項目中並停止使用這麼多印刷品是否有好處?

日誌記錄模組提供的功能遠不止我在這裡展示的那麼少。但這一點已經足夠了!如果有必要,文件會很好地解釋其他案例、方法、配置等。

版本聲明 本文轉載於:https://dev.to/javicerodriguez/logging-con-python-2j7m?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • JavaScript For 迴圈範例
    JavaScript For 迴圈範例
    標準 For 循環 for (let i = 0; i < 5; i ) { console.log(`Iteration ${i 1}`); } For...of 迴圈(遍歷陣列) const fruits = ['apple', 'banana'...
    程式設計 發佈於2024-11-08
  • JavaScript 中的陣列:您需要了解的一切
    JavaScript 中的陣列:您需要了解的一切
    JavaScript 中的数组 JavaScript 中的数组最初可能会令人困惑且难以掌握,尤其是在处理高级概念时。我一开始也很难理解 JavaScript 中的数组。在本文中,我的目标是揭开 JavaScript 中数组的神秘面纱,分解您需要了解的所有内容,以便您可以自信地使用它...
    程式設計 發佈於2024-11-08
  • 使用序列與字串時如何解決 SQLite 中的參數替換問題?
    使用序列與字串時如何解決 SQLite 中的參數替換問題?
    對 SQLite 中的參數替換問題進行故障排除在 Python 中使用 SQLite3 中的參數替換時遇到問題嗎?這裡有一個深入的調查和解決方案。 為了防止SQL注入,使用'?'進行參數替換是可取的。然而,使用這種方法時可能會出現錯誤。例如,使用以下程式碼:for item in s...
    程式設計 發佈於2024-11-08
  • 如何在 Golang 中處理貨幣格式?
    如何在 Golang 中處理貨幣格式?
    Golang 中正確的貨幣格式使用貨幣格式時,必須考慮每種貨幣和語言組合的具體要求。使用 golang.org/x/text/currency,您可以根據本機約定輕鬆格式化值。但是,您在獲得所需的輸出時可能會遇到一些挑戰。 使用貨幣符號在您的代碼中,您使用currency.Symbol 來檢索貨幣符...
    程式設計 發佈於2024-11-08
  • 為什麼在 CSS 類別名稱中使用反斜杠,如 \".container.\\31 25\\25\"?
    為什麼在 CSS 類別名稱中使用反斜杠,如 \".container.\\31 25\\25\"?
    CSS的「.container.\31 25\25」中反斜線字元的用途是什麼? 在提供的CSS代碼中,反斜線字元 () 具有與識別符轉義相關的特定目的。根據CSS規範:轉義特殊字元: 反斜線可以取消CSS特殊字元的意思。在這種情況下,它可以防止百分號 (%) 被識別為 CSS 計算的開始。 數字代碼...
    程式設計 發佈於2024-11-08
  • 如何在 JavaScript 中將多個數字組合併為一個?
    如何在 JavaScript 中將多個數字組合併為一個?
    將陣列項目連接成單一陣列在JavaScript 中,將多個陣列的元素組合成一個新陣列可能是一種常見的需求。實現此目的的一種方法是使用循環迭代每個來源數組並將項目推入目標數組。然而,這種方法可能乏味且效率低。 利用「concat」函數幸運的是,JavaScript 提供了一個更簡單、更優雅的解決方案:...
    程式設計 發佈於2024-11-08
  • ## 為什麼我不能在 Go 中只複製帶有指標接收器的類型實例?
    ## 為什麼我不能在 Go 中只複製帶有指標接收器的類型實例?
    了解指標接收器和複製實例在 Go 中,可以使用值接收器或指標接收器來定義方法。當類型 T 的所有方法都有 T 本身的接收者類型時,複製該類型的實例是安全的,因為呼叫其任何方法都必然會進行複製。 然而,當類型有帶有指標接收器的方法。在這種情況下,應避免複製該類型的實例,因為它可能違反內部不變量。 複製...
    程式設計 發佈於2024-11-08
  • Java 中的建構函式重載
    Java 中的建構函式重載
    建構子在初始化類別中扮演至關重要的角色。但您是否知道在 Java 中,一個類別可以有多個建構函式?這個概念稱為建構函數重載,該功能可讓您根據提供的參數以不同的方式建立物件。在本文中,我們將深入探討建構函式重載,探討其好處,並查看實際範例。 什麼是構造函數重載? 建構子重載在Java...
    程式設計 發佈於2024-11-08
  • 如何使用 Python 函式庫維護 JSON 物件中鍵的順序?
    如何使用 Python 函式庫維護 JSON 物件中鍵的順序?
    使用Python 庫保留JSON 物件屬性的順序使用json.dumps 將Python 物件轉換為JSON 字串時,輸出JSON 物件中鍵的順序可能與輸入Python 物件中鍵的原始順序不一致。如果需要特定的鍵順序,這可能會出現問題。 要解決此問題,您可以利用某些 Python 庫,它們提供了維護...
    程式設計 發佈於2024-11-08
  • ## 什麼是 __construct 方法以及它在 PHP 中如何運作?
    ## 什麼是 __construct 方法以及它在 PHP 中如何運作?
    理解__construct在類別定義中的作用理解__construct在類別定義中的作用在物件導向程式設計中,__construct方法在類別定義中起著至關重要的作用。它作為構造函數,負責在創建物件時初始化和設定物件的屬性。 什麼是 __construct? __construct 是 PHP5 中...
    程式設計 發佈於2024-11-08
  • 如何在 C++ 中傳遞給非主函數的陣列上使用基於範圍的 for 迴圈?
    如何在 C++ 中傳遞給非主函數的陣列上使用基於範圍的 for 迴圈?
    傳遞給非主函數的數組上基於範圍的for 循環在C 中,基於範圍的for 循環可以是用於迭代數組。但是,當數組傳遞給非主函數時,它會衰減為指針,從而失去其大小資訊。 要解決此問題並啟用基於範圍的 for 循環,數組應該被引用而不是作為指標傳遞。這保留了數組的大小資訊。以下是示範正確方法的修改範例:vo...
    程式設計 發佈於2024-11-08
  • 使用 Python 進行詞嵌入:Wordc
    使用 Python 進行詞嵌入:Wordc
    使用 Python(和 Gensim)實現 word2vec 注意:此程式碼是用Python 3.6.1(Gensim 2.3.0)編寫的 word2vec與Gensim的Python實現及應用 原文:Mikolov, T.、Chen, K.、Corrado, G. 與 Dean,...
    程式設計 發佈於2024-11-08
  • 如何解決 C# 中 MySQL UTF-8 資料的編碼問題?
    如何解決 C# 中 MySQL UTF-8 資料的編碼問題?
    MySQL 和C# 中的編碼問題在您的專案中,從以UTF 編碼的MySQL 資料庫檢索資料時遇到字元差異-8 使用ADO.Net實體框架。具體來說,像“ë”這樣的字元顯示為“à”。 可能的解決方案要修正此問題,有兩個關鍵步驟: 1。驗證資料庫排序規則確保資料庫或表格的排序規則設定為 UTF-8 排序...
    程式設計 發佈於2024-11-08
  • 適合初學者的 VueJs VueJs 部分創建、導入和使用元件
    適合初學者的 VueJs VueJs 部分創建、導入和使用元件
    創建您的第一個組件 什麼是組件? 元件是 Vue 應用程式的建構塊。每個元件都有自己的功能和視圖,元件可以在整個應用程式中重複使用。組件的一個範例是可以在不同頁面上存取的導覽列。 建立基本元件 在元件資料夾中建立一個名為 HelloWorld.vue 的新元件檔案(如果需要,您...
    程式設計 發佈於2024-11-08
  • 如何在Python中為共享模組創建命名空間包?
    如何在Python中為共享模組創建命名空間包?
    在Python 中創建命名空間包以進行共享模組分發簡介在Python 中,命名空間包是分發相關模組的便捷方法。它們使多個 Python 產品能夠在同一命名空間中定義模組,從而允許最終用戶無縫導入它們。 實作命名空間包Python 3.3 中的隱式命名空間包從Python 3.3開始,引入了隱式命名空...
    程式設計 發佈於2024-11-08

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3