python logging模塊使用


近來再弄一個小項目,已經到收尾階段了。希望加入寫log機制來增加程序出錯后的判斷分析。嘗試使用了python logging模塊。

#-*- coding:utf-8 -*-
import logging
import sys
class LogRecord(object):
    def __init__(self):
        self.mylogger = logging.getLogger('iplog')
        self.mylogger.setLevel(logging.WARNING)
        #創建一個handler,用於寫入日志文件
        self.fn = logging.FileHandler(sys.path[0]+'/iplog.log','a')
        #定義handler的輸出格式formatter
        self.formatter = logging.Formatter('%(asctime)s %(levelname)s %(filename)s[line:%(lineno)d] %(message)s')
        #定義handler的輸出格式
        self.fn.setFormatter(self.formatter)
        #給mylogger添加handler
        self.mylogger.addHandler(self.fn)

    def GetLogObj(self):
        return self.mylogger

logging模塊使用起來也比較簡單。

logging.getLogger([name]):

返回一個logger對象,如果沒有指定名字將返回root logger。

self.mylogger.setLevel(level):

指定最低的日志級別,可用的日志級別有logging.DEBUG<logging.INFO<logging.WARNING<logging.ERRO<logging.CRITICAL。

只有日志等級大於或等於設置的日志級別的日志才會被輸出。

logging.FileHandle(path):

創建一個handler,用於寫入日志文件.也可以創建一個StreamHandle控制台輸出。還有很多Handle就大家自行進行擴展了。

logging.Formatter(*args):

定義handler的輸出格式formatter。輸出格式有很多。

format參數中可能用到的格式化串:
%(name)s Logger的名字
%(levelno)s 數字形式的日志級別
%(levelname)s 文本形式的日志級別
%(filename)s 調用日志輸出函數的模塊的文件名
%(module)s 調用日志輸出函數的模塊名
%(funcName)s 調用日志輸出函數的函數名
%(lineno)d 調用日志輸出函數的語句所在的代碼行
%(created)f 當前時間,用UNIX標准的表示時間的浮 點數表示
%(relativeCreated)d 輸出日志信息時的,自Logger創建以 來的毫秒數
%(asctime)s 字符串形式的當前時間。默認格式是 “2003-07-08 16:49:45,896”。逗號后面的是毫秒
%(message)s用戶輸出的消息

self.fn.setFormatter(self.formatter):

將輸出格式綁定到handle上。

self.mylogger.addHandler(self.fn):

將handle綁定到mylogger對象上。

 

接下來就直接調用mylogger.error or debug or warning or info.....,直接輸出到指定的log文件中了。但是要記得當前的self.mylogger.setLevel(logging.WARNING)是什么?只要大於或者等於WARING的日志等級才會被寫入log文件中。

if status_first == -1:
  self.mylogger.error("new_ipurl = %s,first download is failed!fail url save." % new_ipurl) self.failurllst.append(new_ipurl) 
else:
  self.mylogger.debug("new_ipurl = %s,download is success!" % new_ipurl)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM