python logging模組配置方法淺析

來源:互聯網
上載者:User

標籤:python logging

    以下功能函數配置logging模組。它們位於logging.config模組中。它們的使用是可選的 - 可以使用這些功能函數配置logging模組;或者通過調用主API(logging中定義)並且定義在logging或logging.handlers中定義的handlers。


logging.config.dictConfig(config):

    從字典擷取logging配置。


logging.config.fileConfig(fname, defaults=None, disable_existing_loggers=True):

    從一個configparser格式命名為fname的檔案中讀取logging配置。


配置字典:

傳遞給dictConfig()的字典必須包含以下關鍵字:

  • version:被設定為表示模式版本的整數值,目前唯一有效值為1

  • formatters:值是字典類型,其中每個key是一個formatter id,每一個value是一個字典並描述如何配置相應的Formatter執行個體

  • filters:值是字典類型,其中每個key是一個過濾器,每一個value是一個字典並描述如何配置相應的Filter執行個體

  • handlers:值是字典類型,每個key是一個handler id,每個value是一個描述如何配置相應Handler執行個體的字典

 handlers配置字典搜尋以下key:

 class(強制):handler類的完整描述名

 level(可選):handler等級

 formatter(可選):用於該handler的formatter id

 filters(可選):用於該handler的filter id的列表

loggers:值是字典類型,其中每個key是一個logger名,每個value是一個描述配置相應Logger執行個體的字典

root:root logger的配置。配置的處理將和任何logger一樣,除了propagate不適用

incremental:是否配置被解釋為已存在配置的增量。預設False

disable_existing_loggers:是否任何已存在的logger都被禁止。預設True,如果incremental為True,該值被忽略


看一個實際的logging設定檔:

version: 1formatters:  simple:    format: ‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘handlers:  console:    class: logging.StreamHandler    level: DEBUG    formatter: simple    stream: ext://sys.stdout  info_file_handler:    class: logging.handlers.RotatingFileHandler    level: INFO    formatter: simple    filename: info.log    maxBytes: 10485760    backupCount: 3    encoding: utf8  error_file_handler:    class: logging.handlers.RotatingFileHandler    level: ERROR    formatter: simple    filename: error.log    maxBytes: 10485760    backupCount: 3    encoding: utf8loggers:  simpleExample:    level: DEBUG    handlers: [console]    propagate: noroot:  level: DEBUG  handlers: [console, info_file_handler, error_file_handler]


定義了一個名稱為‘simple‘的formatter

定義了三個handler:‘console‘, ‘info_file_handler‘, ‘error_file_handler‘

定義了一個logger:‘simpleExample‘

定義了一個root


    預設logger使用root的配置,例如常用的logging.getLoggeer(__name__),由於__name__對應的logger沒有在設定檔中定義,因此建立預設root的配置的logger執行個體,其包括三個handler:console,info_file_handler,error_file_handler,相應的日誌也會輸出到三個handler定義的目的地。如果調用logging.getLoggeer(‘simpleExample‘),則建立設定檔中匹配的名稱為‘simpleExample‘的logger執行個體,其handler為console,即在console輸出日誌。


    logging.handlers.RotatingFileHandler可以實現記錄檔自動迴圈覆蓋的功能,如果需要實現記錄檔變更後(例如被刪除)自動產生,則需要使用logging.handlers.WatchedFileHandler,目前看沒有找到同時具備上述兩個功能的handler。

python logging模組配置方法淺析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.