Python列印log,包括行號,路徑,方法名,檔案
阿新 • • 發佈:2019-01-08
logger.py 檔案
#!/usr/bin/python # coding: utf-8 import logging import logging.handlers from logging import * from datetime import * logger = logging.getLogger() logger.setLevel(logging.DEBUG) rht = logging.handlers.TimedRotatingFileHandler("reindex_out.log", 'D') fmt = logging.Formatter("%(asctime)s %(pathname)s %(filename)s %(funcName)s %(lineno)s \ %(levelname)s - %(message)s", "%Y-%m-%d %H:%M:%S") rht.setFormatter(fmt) logger.addHandler(rht) debug = logger.debug info = logger.info warning = logger.warn error = logger.error critical = logger.critical
測試指令碼
#!/usr/bin/env python
# coding utf-8
from logger import *
import sys
import os
info("log from logger info")
debug("this is from test.py")
print 'current dir is ' + os.getcwd()
format: 指定輸出的格式和內容,format可以輸出很多有用資訊,如上例所示:
%(levelno)s: 列印日誌級別的數值 %(levelname)s: 列印日誌級別名稱 %(pathname)s: 列印當前執行程式的路徑,其實就是sys.argv[0] %(filename)s: 列印當前執行程式名 %(funcName)s: 列印日誌的當前函式 %(lineno)d: 列印日誌的當前行號 %(asctime)s: 列印日誌的時間 %(thread)d: 列印執行緒ID %(threadName)s: 列印執行緒名稱 %(process)d: 列印程序ID %(message)s: 列印日誌資訊
datefmt: 指定時間格式,同time.strftime()
level: 設定日誌級別,預設為logging.WARNING
級別 | 對應的值 |
---|---|
CRITICAL | 50 |
ERROR | 40 |
WARNING | 30 |
INFO | 20 |
DEBUG | 10 |
NOTSET | 0 |
可以給日誌物件(Logger Instance)設定日誌級別,低於該級別的日誌訊息將會被忽略,也可以給Hanlder設定日誌級別,對於低於該級別的日誌訊息, Handler也會忽略。