Python Logging模塊的簡單使用

記錄日誌作爲做項目最基本的功能之一,在Python中是通過Logging模塊實現的。簡單記錄一下Python Logging的模板,後續方便直接引用。

Logging的基本常識不在贅述,可以通過各種渠道學習。附上官網鏈接:https://docs.python.org/zh-cn/3.7/howto/logging.html#logging-basic-tutorial

整個模板的結構是:


一、核心是loggers.py

import logging
from logging.handlers import RotatingFileHandler


def init():
    global root
  
    # 定義類型爲RotatingFileHandler的handlers,非必須
    filename = "log.txt"
    fh = RotatingFileHandler(filename, maxBytes=1024, backupCount=3)
    
    # logging配置信息
    logging.basicConfig(
        format="%(asctime)s %(name)s %(pathname)s[line:%(lineno)d] %(levelname)s: %(message)s",
        level=logging.DEBUG,
        handlers=[fh]
    )
    root = get()


def get(name=None):
    return logging.getLogger(name)

通過logging.basicConfig定義Logging的基本配置信息,其中format定義日誌輸出格式、level定義輸出級別、handlers定義處理器(可以沒有)。

Logger是有層級關係的,這裏定義的root Logger是最頂層日誌器,我們通過定義函數get()去創建子Logger日誌。

二、core中存放業務代碼

在core中可以寫業務代碼,寫日誌的方式都比較熟悉,會有debug、info、error等,根據需要來即可。

from app import loggers

logs = loggers.get(__name__) # 創建子Logger
def message():
    logs.debug("this is a debug message")
    logs.debug("this is a warning message")

三、程序入口與結果

main.py中初始化Logger,並調用業務代碼

from app import loggers
from app.core import work1, work2

if __name__ == '__main__':
    loggers.init()
    work1.message()
    work2.message()

記錄到的日誌信息,符合預期。


四、總結

基本上Python類的項目都可以沿用這個日誌模塊的模板,具體項目中可以不通過Handler去真的“記錄日誌”,比如通過k8s、gunicorn等組件,去“重定向”日誌信息也是可以的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章