Python logging模塊

    logging模塊與log4j的機制是同樣的,只是具體的實現細節不一樣。模塊提供logger,handler,filter,formatter四個主要組件。 html

      logger:提供日誌接口,供應用代碼使用。logger最長用的操做有兩類:配置和發送日誌消息。能夠經過 logging.getLogger(name)獲取logger對象,若是不指定name則返回root對象,屢次使用相同的name調用 getLogger方法返回同一個logger對象。 python

      handler:將日誌記錄(log record)發送到合適的目的地(destination),好比文件,socket等。一個logger對象能夠經過addHandler方法添加0 到多個handler,每一個handler又能夠定義不一樣日誌級別,以實現日誌分級過濾顯示。 shell

      filter:提供一種優雅的方式決定一個日誌記錄是否發送到handler。 服務器

      formatter:指定日誌記錄輸出的具體格式。formatter的構造方法須要兩個參數:消息的格式字符串和日期字符串,這兩個參數都是可選的。 app

   在記錄日誌時, 日誌消息都會關聯一個級別,系統默認提供了6個級別,它們分別是:CRITICAL、ERROR、WARNING、INFO、DEBU、NOTSET。他們的大小關係爲:CRITICAL > ERROR > WARNING > INFO > DEBUG > NOTSET。因此能夠給日誌對象設置日誌級別,低於該級別的日誌消息將會被忽略,也能夠給Hanlder設置日誌級別,對於低於該級別的日誌消息, Handler也會忽略。 socket

logging.getLogger([name]) 函數

    建立Logger對象,若是沒有指定name,返回root logger。只要name相同,返回的logger實例都是同一個並且只有一個,即name和logger實例是一一對應的。日誌記錄的工做主要由Logger對象來完成。在調用getLogger時要提供Logger的名稱(注:屢次使用相同名稱來調用getLogger,返回的是同一個對象的引用。),Logger實例之間有層次關係,這些關係經過Logger名稱來體現。 spa

Logger對像有以下經常使用的方法和屬性: debug

Logger.setLevel(lvl):設置日誌的級別。對於低於該級別的日誌消息將被忽略。
Logger.debug(msg [ ,*args [, **kwargs]]):設置日誌消息
Logger.info(msg[ , *args[ , **kwargs] ] )
Logger.warnning(msg[ , *args[ , **kwargs] ] )
Logger.error(msg[ , *args[ , **kwargs] ] )
Logger.critical(msg[ , *args[ , **kwargs] ] )

logging.basicConfig([**kwargs])
日誌

    該函數對日誌的輸出格式及方式作相關配置,kwargs 支持以下幾個關鍵字參數:
     filename:日誌文件的保存路徑。若是配置了些參數,將自動建立一個FileHandler做爲Handler;
     filemode:日誌文件的打開模式。 默認值爲'a',表示日誌消息以追加的形式添加到日誌文件中。若是設爲'w', 那麼每次程序啓動的時候都會建立一個新的日誌文件;
     format:設置日誌輸出格式;
     datefmt:定義日期格式;
     level:設置日誌的級別.對低於該級別的日誌消息將被忽略;
     stream:設置特定的流用於初始化StreamHandler;

logging.basicConfig(level=logging.WARN,
				format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
				datefmt='%a, %d %b %Y %H:%M:%S',
				filename='myapp.log',
				filemode='w')
logging.debug('debug')  #被忽略  
logging.info('info')    #被忽略  
logging.warning('warn')  #被記錄
logging.error('error')   #被記錄
logging.getLevelName(lvl)

   經過數字獲取日誌級別對應的名稱

logging.shutdown()

   當再也不使用日誌系統的時候,調用該方法,它會將日誌flush到對應的目標域上。通常在系統退出的時候調用。

Logger.addHandler(hdlr)

   logger能夠僱傭handler來幫它處理日誌, handler主要有如下幾種:
      StreamHandler: 輸出到控制檯
      FileHandler:   輸出到文件

   因爲StreamHandler和FileHandler是經常使用的日誌處理方式,因此直接包含在logging模塊中,而其餘方式則包含在logging.handlers模塊中,

logging的幾種handle方式以下: logging.handlers.BaseRotatingHandler logging.handlers.RotatingFileHandler logging.handlers.TimedRotatingFileHandler logging.handlers.SocketHandler: 遠程輸出日誌到TCP/IP sockets logging.handlers.DatagramHandler:  遠程輸出日誌到UDP sockets logging.handlers.SMTPHandler:  遠程輸出日誌到郵件地址 logging.handlers.SysLogHandler: 日誌輸出到syslog logging.handlers.NTEventLogHandler: 遠程輸出日誌到Windows NT/2000/XP的事件日誌 logging.handlers.MemoryHandler: 日誌輸出到內存中的制定buffer logging.handlers.HTTPHandler: 經過"GET"或"POST"遠程輸出到HTTP服務器 參考:http://docs.python.org/2/library/logging.html

相關文章
相關標籤/搜索