##importlogginglogging.debug('debug message')logging.info('info message')logging.warning('warning message') # WARNING:root:warning messagelogging.erro ...
##
importlogging
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message') # WARNING:root:warning message
logging.error('error message') # ERROR:root:error message
logging.critical('critical message') # CRITICAL:root:critical message
這裡是在控制台顯示
logging.basicConfig(level=logging.DEBUG,
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')
加了這個過後,是寫到文件裡面,寫到myapp.log裡面
asctime是時間,datefmt就是設置這個的,filename是文件名字,lineno是代碼中的行號,levelname表示上面級別的名字message就是顯示的信息,filemode模式是控制寫到文件還是其他地方。
##文件內容
Sat, 30 Dec 2017 01:27:05 logging_module.py [line:12] DEBUG debug message
Sat, 30 Dec 2017 01:27:05 logging_module.py [line:13] INFO info message
Sat, 30 Dec 2017 01:27:05 logging_module.py [line:14] WARNING warning message
Sat, 30 Dec 2017 01:27:05 logging_module.py [line:15] ERROR error message
Sat, 30 Dec 2017 01:27:05 logging_module.py [line:16] CRITICAL critical message
這個是文件顯示
logging.basicConfig函數各參數:
filename: 指定日誌文件名
filemode: 和file函數意義相同,指定日誌文件的打開模式,'w'或'a'
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
stream: 指定將日誌的輸出流,可以指定輸出到sys.stderr,sys.stdout或者文件,預設輸出到sys.stderr,當stream和filename同時指定時,stream被忽略
源文檔 <http://www.cnblogs.com/dkblog/archive/2011/08/26/2155018.html>
#下麵這裡設置記錄到文件和屏幕顯示
logger = logging.getLogger() # 獲取一個logger對象
fh = logging.FileHandler('test.log') # 創建一個handler,用於寫入日誌文件,文件輸出對象
ch = logging.StreamHandler() # 創建一個handler,用於輸出到控制台,屏幕輸出對象
formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s') # 格式對象
fh.setFormatter(formatter) # 給兩個輸出對象設置格式
ch.setFormatter(formatter)
logger.addHandler(fh) # 日誌添加輸出對象
logger.addHandler(ch)
logger.setLevel(logging.DEBUG) # 設置等級
logger.debug('loggerdebugmessage')
logger.info('loggerinfomessage')
logger.warning('loggerwarningmessage')
logger.error('loggererrormessage')
logger.critical('loggercriticalmessage')
#使用步驟:獲取logger對象,建立handler對象,handler對象設置格式,logger對象添加handler對象,使用
##深入一點的應該要到使用的時候