python日誌公用文件設計,python 寫日誌

本文目錄一覽:

python常用的幾種設計模式是什麼

python常用的幾種設計模式有:1、單例模式,確保某一個類只有一個實例;2、工廠模式,使用一個公共的接口來創建對象;3、策略模式,隨着策略對象改變內容;4、門面模式,對子系統的封裝,使得封裝接口不會被單獨提出來。

什麼是設計模式?

設計模式是一套被反覆使用,多數人知道,經過分類編目的代碼設計經驗總結。

使用設計模式是為了提高代碼可重用性,可閱讀性,和可靠性。

你說理解的設計模式有幾種?

設計模式又可分為三種:創建型(單例模式)、(工廠模式),結構型,行為型(策略模式)

單例模式以及應用場景:

(1)確保某一個類只有一個實例,而且自行實例化並向整個系統提供這個實例,這個類稱為單例類,單例模式是一種對象創建型模式。Windows的Task Manager(任務管理器)、Recycle Bin(回收站)、網站計數器

(2)單例模式應用的場景一般發現在以下條件下:

資源共享的情況下,避免由於資源操作時導致的性能或損耗等。如上述中的日誌文件,應用配置。控制資源的情況下,方便資源之間的互相通信。如線程池等

要點:一是某個類只能有一個實例;二是它必須自行創建這個實例;三是它必須自行向整個系統提供這個實例。

工廠模式:

提供一個創建對象的接口,不像客戶端暴露創建對象的過程,而是使用一個公共的接口來創建對象。

可以分為三種:簡單工廠  工廠方法   抽象工廠

一個類的行為或其算法可以在運行時更改。這種類型的設計模式屬於行為型模式。

策略模式:

在策略模式中,我們創建表示各種策略的對象和一個行為隨着策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行算法。

要點:把一個個策略,也就是算法封裝成一個一個類,任意的替換

解決的問題:避免多個if….else帶來的複雜

使用場景:系統中需要動態的在集中算法中動態的選擇一種,

門面模式:

門面模式也叫外觀模式,定義如下:要求一個子系統的外部與其內部的通信必須通過一個統一的對象進行。門面模式提供一個高層次的接口,使得子系統更易於使用。門面模式注重“統一的對象”,也就是提供一個訪問子系統的接口。門面模式與之前說過的模板模式有類似的地方,都是對一些需要重複方法的封裝。但從本質上來說,是不同的。模板模式是對類本身的方法的封裝,其被封裝的方法也可以單獨使用;而門面模式,是對子系統的封裝,其被封裝的接口理論上是不會被單獨提出來用的。

一個對象有很多行為,如果么有選擇合適的設計模式,這些行為就需要用多重的條件判斷來實現算法的切換,增加了代碼的複雜度。

推薦課程:Python面對對象(Corey Schafer)

python日誌模塊記錄三_日誌命名_日誌輪轉

在日誌記錄中,我們往往要能看到是什麼哪裡出錯了。可以通過日誌名字記錄哪裡出錯了。而日誌也需要輪轉,一個日誌文件不能無限大,也需要備份。所以有了通過日誌名的靈活配置,和通過設置handler文件輸出調用 logging.handlers.RotatingFileHandler 方法來實現輪轉和備份。

my_logging文件如下配置

Python日誌—Python日誌模塊logging介紹

從事與軟件相關工作的人,應該都聽過“日誌”一詞。

日誌就是跟蹤軟件運行時事件的方法,為了能夠在程序運行過程中記錄錯誤。

通過日誌記錄程序的運行,方便我們查詢信息,以便追蹤問題、進行維護和調試、還是數據分析。

並且各編程語言都形成了各自的日誌體系和相應的框架。

日誌的作用總結:

首先我們要樹立一個觀點,那就是“不是為了記錄日誌而記錄日誌,日誌也不是隨意記的”。要實現能夠只通過日誌文件還原整個程序執行的過程,達到能透明地看到程序里執行情況,每個線程每個過程到底執行結果的目的。日誌就像飛機的黑匣子一樣,應當能夠復原異常的整個現場乃至細節。

在項目中,日誌這個功能非常重要,我們要重視起來。

在Python中,使用logging模塊來進行日誌的處理。

logging是Python的內置模塊,主要用於將日誌信息進行格式化內容輸出,可將格式化內容輸出到文件,也可輸出到屏幕。

我們在開發過程中,常用print()函數來進行調試,但是在實際應用的部署時,我們要將日誌信息輸出到文件中,方便後續查找以及備份。

在我們使用日誌管理時,我們也可以將日誌格式化成Json對象轉存到ELK中方便圖形化查看及管理。

logging模塊將日誌系統從高向低依次定義了四個類,分別是logger(日誌器)、handler(處理器)、filter(過濾器)和formatter(格式器)。其中由日誌器生成的實例將接管原本日誌記錄函數logging.log的功能。

說明:

我們先來思考下下面的兩個問題:

在軟件開發階段或部署開發環境時,為了儘可能詳細的查看應用程序的運行狀態來保證上線後的穩定性,我們可能需要把該應用程序所有的運行日誌全部記錄下來進行分析,這是非常耗費機器性能的。

當應用程序正式發布或在生產環境部署應用程序時,我們通常只需要記錄應用程序的異常信息、錯誤信息等,這樣既可以減小服務器的I/O壓力,也可以避免我們在排查故障時被淹沒在日誌的海洋里。

那麼怎樣才能在不改動應用程序代碼的情況下,根據事件的重要性或者稱之為等級,實現在不同的環境中,記錄不同詳細程度的日誌呢?

這就是日誌等級的作用了,我們通過配置文件指定我們需要的日誌等級就可以了。

說明:

總結:

開發應用程序時或部署開發環境時,可以使用DEBUG或INFO級別的日誌獲取儘可能詳細的日誌信息,可以方便進行開發或部署調試。 應用上線或部署生產環境時,應用使用WARNING或ERROR或CRITICAL級別的日誌,來降低機器的I/O壓力和提高獲取錯誤日誌信息的效率。 日誌級別的指定通常都是在應用程序的配置文件中進行指定的。 不同的應用程序所定義的日誌等級會有所差別,根據實際需求來決定。

操作數據庫的時候怎麼生成日誌文件 python3

日誌可以用來記錄應用程序的狀態、錯誤和信息消息,也經常作為調試程序的工具。它的重要性就不多說了,直接進入正題。

python提供了一個標準的日誌接口,就是logging模塊。日誌級別有DEBUG、INFO、WARNING、ERROR、CRITICAL五種。

首先來看logging簡單的使用方法。

這一看到此圖中使用了debug()、info()、warning()、error()、critical()五個方法,這五個方法分別用來記錄DEBUG、INFO、WARNING、ERROR、CRITICAL級別的日誌。但是你會發現debug()和info()方法沒有顯示任何信息,這是因為默認的日誌級別是ERROR ,所以低於此級別的日誌不會記錄。你還可能會疑惑輸出來的日誌怎麼這樣子?別急,往下看,慢慢來解釋。

下面我們來看怎麼修改一下日誌級別。

如圖上所示,可以使用basicConfig()方法,修改日誌級別,logging.DEBUG,logging.INFO,logging.WARNING,logging.ERROR,logging.CRITICAL分別代表着那五中日誌級別。可以看到圖中日誌級別設為INFO,那麼INFO級別以上的日誌都會被記錄。

下面再看下怎麼修改日誌的輸出格式。

查看下執行結果:

這個示例內容可能有點多了,沒關係,我們一點一點來。

首先程序中:

log_format = ‘%(filename)s [%(asctime)s] [%(levelname)s] %(message)s’

#這條是定義日誌格式的一個變量。顯示的條目可以是以下內容:

%(levelname):日誌級別的名字格式

%(levelno)s:日誌級別的數字表示

%(name)s:日誌名字

%(funcName)s:函數名字

%(asctime):日誌時間,可以使用datefmt去定義時間格式,如上圖。

%(pathname):腳本的絕對路徑

%(filename):腳本的名字

%(module):模塊的名字

%(thread):thread id

%(threadName):線程的名字

logging.basicConfig(format=log_format,datefmt=’%Y-%m-%d %H:%M:%S %p’,level=logging.DEBUG) #設置日誌輸出格式和級別。

上面的示例都是將日誌輸出到屏幕上,能不能寫到一個日誌文件中呢?答案當然是肯定的,來看:

看下執行結果:

看了吧,日誌的設置都是使用basicConfig()方法,需要注意的是,日誌寫入文件的默認方式是‘a’,也就是追加,如果想覆蓋文件,則使用如上圖那樣,使用filemode=’w’。

以上是logging模塊最常用的了,基本上就夠用了。但是如果你覺得這些還不夠的話,看我下一篇博客。會講Logger、Handler、Formatter對象,logging模塊更高級的用法用法。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/228833.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-10 12:08
下一篇 2024-12-10 12:08

相關推薦

  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29
  • Python清華鏡像下載

    Python清華鏡像是一個高質量的Python開發資源鏡像站,提供了Python及其相關的開發工具、框架和文檔的下載服務。本文將從以下幾個方面對Python清華鏡像下載進行詳細的闡…

    編程 2025-04-29
  • 蝴蝶優化算法Python版

    蝴蝶優化算法是一種基於仿生學的優化算法,模仿自然界中的蝴蝶進行搜索。它可以應用於多個領域的優化問題,包括數學優化、工程問題、機器學習等。本文將從多個方面對蝴蝶優化算法Python版…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29

發表回復

登錄後才能評論