常见模块(二) logging模块

logging模块是专门做日志系统的.分为函数版和自定义函数.

 

(一)logging模块初级版

缺点,不能指定字符集,不能把屏幕输出和文件日志同时记录。只能选择其一。

文件记录日志

import logging

logging.basicConfig(
	level = 30,
	filename = "logger.log",
	filemode = "a",
	format = '%(asctime)s-%(name)s-%(lineno)d-%(message)s',

)

logging.warning("这是一个警告")
logging.error("这是一个错误")
logging.critical("这是一个严重错误")

  

屏幕输出日志

import logging

logging.basicConfig(
	level = 30,
	#filename = "logger.log",
	filemode = "a",
	format = '%(asctime)s-%(name)s-%(lineno)d-%(message)s',

)

logging.warning("这是一个警告")
logging.error("这是一个错误")
logging.critical("这是一个严重错误")

  

 

(二)logging模块中自定义日志系统

import logging

logger = logging.getLogger()  # 自定义一个模块系统
Formatter = logging.Formatter('%(asctime)s-%(name)s-%(lineno)d-%(message)s')  # 定义日志输出格式
ft = logging.FileHandler("logger.log", "a", encoding="utf-8")  # 定义文件流
st = logging.StreamHandler()  # 定义屏幕流
ft.setFormatter(Formatter)  # 将格式加载到文件流中
st.setFormatter(Formatter)  # 将格式加载到屏幕流中
logger.addHandler(ft)  # 将文件流加载到自定义的loger日志系统中
logger.addHandler(st)  # 将屏幕流加载到自定义的loger日志系统中


logger.debug("这是一个debug")
logger.info("这是一个info")
logger.warning("这是一个warning")
logger.error("这是一个error")
logger.critical("这是一个critical")

logger.removeHandler(ft)    # 将Handler移除,避免下次调用,生成同样的Handler导致重复日志,Eg:第一次输出日志一行,第二次输出同样的两行日志(因为又生成了一个Handler)
                            # 第三次输出同样的三行日志

 

常用方法:

import logging

ft = logging.FileHandler("logger.log", "a", encoding="utf-8")  # 定义文件流
Formatter = logging.Formatter('%(asctime)s  Username:%(name)s  message-%(message)s',datefmt='%Y:%m:%d')  # 定义日志输出格式
ft.setFormatter(Formatter)  # 将格式加载到文件流中

logger = logging.Logger(name='a',level=logging.DEBUG)  # 自定义一个模块系统
logger.addHandler(ft)  # 将文件流加载到自定义的loger日志系统中

  

 

 


  

 

posted on 2019-01-16 21:55  Shawn_1026  阅读(119)  评论(0编辑  收藏  举报