Python logging日誌組織方式

來源:互聯網
上載者:User

使用Python logging模組已經有一段時間了,為了更好的理解log工作方式,看了一下其源碼,後總結如下: 日誌模組中有以下核心組件:

  • 1.Logger類:Tlog類
  • 2.Filter類:過濾器類(是Logger、Handler等類父類)
  • 3.Handler類:Tlog類,有各種子類(FileHandler,StreamHandler等)
  • 4.LogRecord類:日誌記錄對象,代表一條日誌記錄
  • 5.Manager類:日誌對象管理器,維護所有Log執行個體,和其父子關係
  • 6.Formatter類:日誌記錄格式化對象

1. logging模組的日誌的根為RootLogger看下面範例程式碼:

    logging.basicConfig()
logging.info('')

logger = logging.getLogger()
logger.info('')

其都是使用RootLogger,name為'root',level為WARNING,我理解成日誌樹的根(最高父日誌執行個體)。


2.logging root看下面的範例程式碼:

     logger1 = logging.getLogger('example')
print logger1.parent.name

#output
root

從上可看出,任何Logger執行個體,都是RootLogger的子節點,root是任何Logger name的最高父節點


3.logging 父子關係

看下面範例程式碼

     logger1 = logging.getLogger('example')
logger2 = logging.getLogger('example.child1')
logger2 = logging.getLogger('example.child2')
print logger1.parent.name
print logger2.parent.name

#output
root
example
example

其父子結構如下:

-root
-example
-example.child1
-example.child2

4.logging.config.fileConfig

其原理就是從logconfig設定檔中讀取filters,formmaters,handlers,loggers等資訊,最後產生一個預置的logger執行個體池, 在外部使用:

    logging.config.fileConfig("logging.conf")

#create logger
logger = logging.getLogger("example")

其原理是先從預置的日誌管理器中檢索有無name為example的log執行個體,如果有則直接使用,若沒有,則新增。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.