1. 程式人生 > >python日誌模組----logging

python日誌模組----logging

使用Python的logging模組能很好的幫我們完成程式的日誌功能,其實它跟Java中的log4j有不少相似的地方。下面記錄下今天學習到的logging的知識(因為有一些還沒真正使用過,不知道是否說得對,希望大家看到有說的不對的地方可以告訴下小弟,謝謝!)。

          1)像其它的語言那樣,python裡的logging資訊同樣也是分為5個等級,從低到高依次是:DEBUG,INFO,WARNING,ERROR,CRITICAL

2)python中,logging由logger,handler,filter,formater四個部分組成,logger是提供我們記錄日誌的方法;handler是讓我們選擇日誌的輸出地方,如:控制檯,檔案,郵件傳送等,一個logger新增多個handler;filter是給使用者提供更加細粒度的控制日誌的輸出內容;formater使用者格式化輸出日誌的資訊。

          3)logger的級別劃分,python中, root是預設的最高級別的,其它的logger的級別通過"."來劃分等級,如:bao,bao.a,bao.b三個logger,bao.a和bao.b都的級別都低於bao,依此類推。

          4)python中配置logging有三種方式:

第一 、在程式中完成logger,handler,filter,formater的例項化被配置好logging,然後再使用logging取得logger進行日誌操作。

第二 、使用配置檔案的方式配置logging,使用fileConfig(filename,defaults=None,disable_existing_loggers=Ture

 )函式來讀取配置檔案。

第三 、使用一個字典方式來寫配置資訊,然後使用dictConfig(dict,defaults=None,disable_existing_loggers=Ture )函式來瓦按成logging的配置 。(這個方式沒有仔細看,所以沒有怎麼說,具體可以看文件)

注意: 在使用第二種和三種方式配置logging的時候,第三個引數預設值是True,當它為True的時候,在這之前定義的logging配置就是失效,不能再使用,也就是隻有配置檔案或者配置字典裡有的內容才能使用。如果先讓之前的logging配置依然有限就要把這個引數設為False,或者一直就是使用配置檔案或者配置字典的方式來對logging進行配置。

下面我們使用程式碼logging的程式碼來說明:

   使用baseConfig()函式對 logging進行 簡單的 配置:

Python程式碼  收藏程式碼
  1. import logging;  
  2. # 使用baseConfig()函式,可選引數有filename,filemode,format,datefmt,level,stream  
  3. # 有filename是檔案日誌輸出,filemode是'w'的話,檔案會被覆蓋之前生成的檔案會被覆蓋。datafmt引數用於格式化日期的輸出  
  4. logging.basicConfig(filename="config.log",filemode="w",format="%(asctime)s-%(name)s-%(levelname)s-%(message)s",level=logging.INFO);  
  5. logger = logging.getLogger("log_demo");  
  6. # 使用logger輸出日誌資訊  
  7. logger.debug("debug");  
  8. logger.info("info");  
  9. logger.warning("warning");  
  10. logger.error("error");  
  11. logger.critical("critiacl");  

   通過初始化logger,handler,formater來配置logging:

Python程式碼  收藏程式碼
  1. import logging;  
  2. # logging模組由logger,handler,filter,fomatter四個部分組成  
  3. # 獲取一個logger物件  
  4. logger = logging.getLogger("haha");  
  5. # 設定日誌輸出等級  
  6. logger.setLevel(logging.DEBUG);  
  7. # 建立一個檔案的handler  
  8. f_handler = logging.FileHandler("xxx.log");  
  9. f_handler.setLevel(logging.INFO);  
  10. # 建立一個控制檯的handler  
  11. c_handler = logging.StreamHandler();  
  12. c_handler.setLevel(logging.WARNING);  
  13. # 設定日誌的輸出格式  
  14. fmt = logging.Formatter("%(asctime)s-%(name)s-%(levelname)s-%(message)s");  
  15. # 給handler繫結一個fomatter類  
  16. f_handler.setFormatter(fmt);  
  17. c_handler.setFormatter(fmt);  
  18. # 繫結一個handler  
  19. logger.addHandler(f_handler);  
  20. logger.addHandler(c_handler);  
  21. # 使用logger輸出日誌資訊  
  22. logger.debug("debug");  
  23. logger.info("info");  
  24. logger.warning("warning");  
  25. logger.error("error");  
  26. logger.critical("critiacl");  

   使用配置檔案實現logging的配置:

Python程式碼  收藏程式碼
  1. import logging  
  2. import logging.config  
  3. # 使用配置檔案配置logging  
  4. logging.config.fileConfig("config.conf");  
  5. logger = logging.getLogger("simpleExample");  
  6. # 使用logger  
  7. logger.debug("debug");  
  8. logger.info("info");  
  9. logger.warning("warning");  
  10. logger.error("error");  
  11. logger.critical("critiacl");  

    與之對應的配置檔案內容如下:

Python程式碼  收藏程式碼
  1. [loggers]  
  2. keys=root,simpleExample  
  3. [handlers]  
  4. keys=consoleHandler,fileHandler  
  5. [formatters]  
  6. keys=simpleFormatter  
  7. [logger_root]  
  8. level=DEBUG  
  9. handlers=consoleHandler  
  10. [logger_simpleExample]  
  11. level=DEBUG  
  12. handlers=consoleHandler,fileHandler  
  13. qualname=simpleExample  
  14. propagate=0  
  15. [handler_consoleHandler]  
  16. class=StreamHandler  
  17. level=DEBUG  
  18. formatter=simpleFormatter  
  19. args=(sys.stdout,)  
  20. [handler_fileHandler]  
  21. class=FileHandler  
  22. level=WARNING  
  23. formatter=simpleFormatter  
  24. args=("file_config_log.log""a")  
  25. [formatter_simpleFormatter]  
  26. format=%(asctime)s - %(name)s - %(levelname)s - %(message)s  
  27. datefmt=  

       上面的配置檔案中:由[loggers],[handlers],[formaters] 資訊,keys對應例項化是他們的名稱,多個用逗號隔開。然後再分別配置各個logger,handler,formaters。以logger為例,logger下有root和simpleExample兩個logger,就要配置[logger_root]和[logger_simpleExample];類似的,handler和formater也是這樣。

[logger_name] 中的引數purlname ,是設定logging.getLoger(name)中的name值;propagete引數 :propagete=0,表示輸出日誌,但訊息不傳遞;propagate=1是輸出日誌,同時訊息往更高級別的地方傳遞。若上面配置檔案引數progagate=1,simpleExample的更高階logger有root,輸出的結果會是:

Python程式碼  收藏程式碼
  1. 2012-08-06 23:07:18,483 - simpleExample - DEBUG - debug  
  2. 2012-08-06 23:07:18,483 - simpleExample - DEBUG - debug  
  3. 2012-08-06 23:07:18,483 - simpleExample - INFO - info  
  4. 2012-08-06 23:07:18,483 - simpleExample - INFO - info  
  5. 2012-08-06 23:07:18,483 - simpleExample - WARNING - warning  
  6. 2012-08-06 23:07:18,483 - simpleExample - WARNING - warning  
  7. 2012-08-06 23:07:18,483 - simpleExample - ERROR - error  
  8. 2012-08-06 23:07:18,483 - simpleExample - ERROR - error  
  9. 2012-08-06 23:07:18,483 - simpleExample - CRITICAL - critiacl  
  10. 2012-08-06 23:07:18,483 - simpleExample - CRITICAL - critiacl  

      最後是 [hander_name] 配置下的args引數,其實就是你使用的handler型別的初始化函式的引數。

相關推薦

Appium-python日誌模組logging(1)

背景: 在除錯指令碼時,可直接使用pycharm IDE展示指令碼執行的日誌,如下圖: 但是,在指令碼完成後,每日定時執行自動化指令碼時,不會開啟pycharm,故會存在看不到日誌的情況,此時需要使用python日誌系統。 Python的日誌模組是logging模組。 Pyth

python日誌模組---logging

通過ini檔案配置logging logger.ini [loggers] keys=root,cLogger,fLogger,cfLogger [logger_root] level=DEBUG handlers=fh [logger_cLogger] handlers=ch

自學Python--日誌模組logging

預設: import logging # 預設輸出warning、error、critical資訊 logging.debug('debug') # 除錯資訊 logging.info('info'

python 日誌模組logging學習與使用(日誌分割)

python中用於日誌建立、設定和記錄等功能的模組,就是logging了,下面是對其基本使用方法的介紹: 一、最最簡單的使用方法:import logging LOG_FILE ="/opt/xxx/log/debug.log" logging.basicConfig(filename=LOG_FILE,l

python日誌模組----logging

使用Python的logging模組能很好的幫我們完成程式的日誌功能,其實它跟Java中的log4j有不少相似的地方。下面記錄下今天學習到的logging的知識(因為有一些還沒真正使用過,不知道是否說得對,希望大家看到有說的不對的地方可以告訴下小弟,謝謝!)。     

Python:日誌模組logging的應用

   通常,在商用軟體中均會有完整的日誌機制,之前使用C語言實現過一個《簡單的分級別寫日誌程式》,具有以下功能和不足: 在Python中,上面以實現的和已經實現的,均可以使用logging模組迅速搞定,且僅僅只需要一個配置檔案,兩行程式碼,實現過程如下(僅以輸出的磁碟檔

Python 日誌logging模組

  demo.py(日誌,輸出到控制檯): import logging # 匯入logging模組 # 日誌級別預設是WARNING logging.basicConfig(level=logging.WARNING, forma

Python日誌輸出——logging模組

1. logging介紹 Python的logging模組提供了通用的日誌系統,可以方便第三方模組或者是應用使用。這個模組提供不同的日誌級別,並可以採用不同的方式記錄日誌,比如檔案,HTTP GET/POST,SMTP,Socket等,甚至可以自己實現具體的日誌

Python——日誌模組logging

一、日誌說明   日誌是跟蹤軟體執行時所發生的事件的一種方法。軟體開發者在程式碼中呼叫日誌函式,表明發生了特定的事件。事件由描述性訊息描述,該描述性訊息可以可選地包含可變資料(即,對於事件的每次出現都潛在地不同的資料)。事件還具有開發者歸因於事件的重要性;重要性也可以稱為級別或嚴重性。 二、列印到控制檯 

Python強大的日誌模組logging

## 前言 日誌是對於軟體執行所發生的事件的一種追蹤記錄方式。日常使用過程中對程式碼執行的錯誤和問題會進行檢視日誌來分析定位問題所在。平常編寫程式碼以及除錯也經常用到。通常的新手的做法是直接print列印,但是列印的結果只在控制檯顯示。今天我們學習一種高階的日誌列印和記錄模組logging。 loggin

Python日誌logging)模塊使用方法簡介

logging python介紹 A logger is configured to have a log level. This log level describes the severity of the messages that the logger will handle. Python defi

Python日誌logging總結-可能是目前為止將logging庫總結的最好的一篇文章

在部署專案時,不可能直接將所有的資訊都輸出到控制檯中,我們可以將這些資訊記錄到日誌檔案中,這樣不僅方便我們檢視程式執行時的情況,也可以在專案出現故障時根據執行時產生的日誌快速定位問題出現的位置。 1、日誌級別 Python 標準庫 logging 用作記錄日誌,預設分為六種日誌級別(括號為級別對應的數值)

一看就懂,Python 日誌模組詳解及應用

日誌概述 百度百科的日誌概述: Windows網路作業系統都設計有各種各樣的日誌檔案,如應用程式日誌,安全日誌、系統日誌、Scheduler服務日誌、FTP日誌、WWW日誌、DNS伺服器日誌等等,這些根據你的系統開啟的服務的不同而有所不同。我們在系統上進行一些操作時,這些日誌檔案通常會記錄下我們操作的一些

python常用模組——logging

日誌模組 logging 預設情況下Python的logging模組的日誌級別是warning,預設輸出到標準輸出stdout 預設的日誌格式為 日誌級別:Logger名稱:使用者輸出訊息; 設定logging的預設格式及輸出位置使用basicConfig方法。 一、 logging模組的常用方

python 日誌模組的例子

import os, shutil import time import logging def simple_log(log_dir=None, log_name=None): if log_dir == None: log_dir

python日誌模組

import logging from common import project_path class MyLog: def my_log(self,level,msg): my_logger = logging.getLogger('python1

python 日誌模組使用

1 logging介紹 1.1 logger 提供日誌介面,供應用程式碼使用。logger最常用的操作有兩類:配置和傳送日誌訊息。通過logging.getLogger(name)來獲得物件

Python 日誌元件Logging 使用手札 (一)

1 題外話 雖然Python很火很火,可是我也是最近一年才開始用Python的,在此之前我是很堅定的Java黨的,不過現在用上了Python,突然覺得Python是很有魔性的,所以漸漸的也用了多了起來。 很久之前,還準備把Java學好之後就好好在學下C++的

Django 日誌模組 logging 的配置

本文將通過一個實際的例子來說明如何配置 logging 模組。更多資訊可以參考 Django 的官網文件。 配置資訊需要在 setting.py 檔案中進行新增。 setting.py DEBUG = True # 通過這種方式可以開啟 DEBUG 模式 L

Appium-python日誌logging模組的簡介和應用(2)

Python的logging模組定義的函式和類為應用程式和庫的開發實現提供了一個靈活的事件日誌系統。   Logging模組提供了兩種記錄日誌的方式: 第一種是使用logging提供的模組級別的函式 第二種是使用logging日誌系統的四大元件 此文主要使用