零配置python日誌,安裝即用

来源:https://www.cnblogs.com/lwsbc/archive/2022/07/01/16436006.html
-Advertisement-
Play Games

本篇代碼提供者: 青燈教育-自游老師 [環境使用]: Python 3.8 Pycharm [模塊使用]: requests >>> pip install requests re json csv 如果安裝python第三方模塊: win + R 輸入 cmd 點擊確定, 輸入安裝命令 pip i ...


寫了很多年的python日誌都是使用內置的logging模塊來完成的,使用時都需要經過繁瑣的配置。有時候,還可能出現丟失日誌的情況,直到loguru的出現。

【閱讀全文】

loguru真的是十分的簡單的,安裝之後直接導入到python代碼塊中即可直接使用。

1、安裝環境

我們還是按照pip的方式來進行安裝,預設使用清華大學的鏡像站。

pip install loguru -i https://pypi.tuna.tsinghua.edu.cn/simple

安裝完成後就可以直接開始使用了。

2、常規日誌列印

在控制台列印常規日誌時不用添加任何的配置直接使用,使用完成後我們可以來驗證一下列印效果。

from loguru import logger

# 使用debug級別列印一行日誌

logger.debug('I am debug message.')

下麵是我在pycharm上面取下來的日誌效果圖。

file

可以看一下效果還是令人滿意的,這顏色搭配也比較nice,並且日誌時間精確到秒級。想要看到的日誌信息也基本囊括了。

3、寫入日誌文件

想寫入日誌文件也是比較簡單不用配置,只需要調用add函數添加文件即可。

# 添加日誌文件

logger.add('./message-info.log')

# 列印一行debug日誌

logger.debug('I am debug message.')

此時,不僅控制台會出現一行日誌,並且在message-info.log文件中也寫入了一條dubug日誌信息。

若是在寫入文件時想要指定自己的輸出格式,則可以直接在add函數直接設置即可,同時可以設置輸出到日誌文件中的級別。

# 按照特定的格式將info級別的日誌寫入到日誌文件中

log = logger.add('./info.log',format='{time} | {level} | {message}',level='INFO')

# 這時,多列印一些info級別的日誌

logger.info('I am info message <1>.')

logger.info('I am info message <2>.')

logger.info('I am info message <3>.')

logger.info('I am info message <4>.')

logger.info('I am info message <5>.')

下麵是在pycharm控制台列印的日誌效果

file

下麵是日誌文件中的展示效果,跟我們設定的日誌格式是一樣的。

file

4、停止寫入日誌文件

在上述過程中我們添加自定義日誌格式的日誌信息到info.log文件中時特意返回了一個log變數。

這個log其實是返回了一個日誌文件的id,在需要停止向該日誌文件中寫入日誌時,只需要調用remove函數將該文件的日誌id作為參數傳入即可停止嚮日志文件中寫入日誌。

# 停止嚮日志文件中寫入日誌

logger.remove(log)

此時,後面的 日誌文件將不會再寫入日誌文件中了。

5、滾動記錄日誌文件

在實際情況中,我們並不是只會有一個日誌文件。當一個日誌文件超過一定的大小、或是在一個特定的時間周期都可以通過參數的設定來生成新的日誌文件繼續記錄日誌。

# 超過10M生成一個新的日誌文件

logger.add('info.log',rotation='10 MB')

# 每天凌晨一點生成一個新的日誌文件

logger.add('info.log',rotation='01:00')

並且,為了防止日誌文件在長時間的記錄之後占用磁碟,一般還可以設置30天為周期清理日誌文件,這樣就又解決了磁碟爆滿的問題。

# 設置該日誌文件保留的時間為30天

logger.add('info.log',retention='30 days')

通常日誌文件如果按照原始的方式存儲,那麼占用空間還是比較大的。loguru也為我們想到了,就是通過指定文件壓縮的格式之後將日誌文件進行壓縮。

logger.add('info.log',compression='zip')

6、異常日誌捕獲

在實際coding過程中,特別是生產環境,若是出現一些異常信息沒有被寫入到日誌文件中的情況時是特別難受的。在生產環境中,日誌是解決問題的唯一辦法。

loguru提供了註解的方式可以將發生異常的函數信息直接寫入日誌文件中,比如,有這樣一個函數在運行過程中發生了異常。

@logger.catch
def func(param):

    return 10 / param

func(0)

上面這個函數在分母是0的時候肯定是會拋出異常的,我們使用註解@logger.catch異常信息就會被寫入。

file

同時,在日誌文件中也會記錄詳細的異常信息。

file

【往期精彩】

file

英語沒學好到底能不能做coder,別再糾結了先學起來...

數據清洗工具flashtext,效率直接提升了幾十倍數!

一個help函數解決了python的所有文檔信息查看...

python 自定義異常/raise關鍵字拋出異常

python 本地音樂播放器製作過程(附完整源碼)

歡迎關註作者公眾號【Python 集中營】,專註於後端編程,每天更新技術乾貨,不定時分享各類資料!
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 如果能開發一個線上K歌應用,就能與王心凌線上合唱實現追星自由。 如何快速實現合唱功能?即構科技提供了實時合唱一站式解決方案和技術實現流程。 ...
  • 前言 我以往在實現點擊按鈕切換DOM元素樣式的時候,使用的是在全局範圍內定義一個flag變數,然後用true和false來對應不同的狀態。 const btn = document.querySelector('#btn'); //獲取按鈕元素 let flag = false; //flag是全局 ...
  • 這裡給大家分享我在網上總結出來的一些知識,希望對大家有所幫助 var length = 10; function fn () { return this.length + 1; } var obj = { length: 5, test1: function () { return fn(); } ...
  • 效果展示 思路分析 層級思路 從展示的效果可以猜到這個效果由3層文字組成。 錶面一層黑色文字 中間一層白色文字 最低的一層是斑馬條紋文字 要實現多層文字,我首先想到的是文字投影 text-shadow ,但通常 text-shadow 只能投個純色出來。 於是思路要改一下,黑色和白色層是投影,斑馬條 ...
  • bootstrap-select,selectpicker 用法詳細:通過官方文檔翻譯 用過selectpicker的都說好~但是網上中文的教程又找不到比較完整的用法,於是去官網看了下 順便弄過來翻譯一下: 選項可以通過數據屬性或JavaScript傳遞。對於數據屬性,附加選項名稱data-,如 d ...
  • Fundebug 前端異常監控服務 Fundebug提供專業的前端異常監控服務,我們的插件可以提供全方位的異常監控,可以幫助開發者第一時間定位各種前端異常,包括但不限於 JavaScript 執行錯誤以及 HTTP 請求錯誤。 並且,Fundebug 支持 Source Map 還原,記錄用戶行為以 ...
  • 前段時間研究了下基於`Prometheus`構建監控系統相關的概念,並以此為基準設計了一個企業級通用的監控告警平臺的方案。這裡分享一下架構的分析過程以及問題的解決思路。 ...
  • 本篇文章中,將描述如何使用go創建CA,並使用CA簽署證書。在使用openssl創建證書時,遵循的步驟是 創建秘鑰 > 創建CA > 生成要頒發證書的秘鑰 > 使用CA簽發證書。這種步驟,那麼我們現在就來嘗試下。 創建證書的頒發機構 首先,會從將從創建 CA 開始。CA 會被用來簽署其他證書 // ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...