Python3中的logging模块提供了较为灵活的事件日志系统
日志级别
DEBUG < INFO < WARING(Python默认) < ERROR < FATAL(CRITICAL)
logging模块常用的类主要有以下几个
logging.Logger
主要提供应用程序代码直接使用的接口,一般不会直接实例化,而是通过logging.getLogger(name)得到
logging.Handler
日志处理对象的基类,不应实例化,被实例化的应该是其子类,如logging.StreamHandler,它负责发送日志记录到正确的目标
logging.Formatter
它决定了以怎样的格式来进行打印日志记录,常用的日志格式如下:
%(name)s
Logger对象的名字
%(levelname)s
日志级别的英文表示
%(filename)s
调用日志输出函数的模块名
%(lineno)s
调用日志输出函数的语句所在的代码行
%(asctime)s
字符串形式的当前时间
%(message)s
用户输出的消息
示例代码
import logging # 1.初始化日志默认配置 logging.basicConfig(filename='./my.log', # 日志输出文件 level=logging.DEBUG, # 日志写入级别 datefmt='%Y-%m-%d %H:%M:%S', # 时间格式 format='%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s') # 日志写入格式 # 2.打印不同级别的日志记录 logging.debug("debug级别的日志") logging.info("info级别的日志") logging.warning("warning级别的日志") logging.error("error级别的日志") logging.critical("fatal级别的日志")
import logging # Formatter对象 用于决定日志打印的格式 fmt = logging.Formatter("%(asctime)s %(levelname)s Line:%(lineno)s==>%(message)s") fmt.datefmt = "%Y-%m-%d %H:%M:%S" # 可以自定义时间的格式 # Handler对象 将(logger创建的)日志记录发送到合适的目的输出 ch = logging.StreamHandler() # 标准输出流处理对象 ch.setFormatter(fmt) ch.setLevel(logging.WARNING) fh = logging.FileHandler("./jet.log") # 文件处理对象 fh.setFormatter(fmt) fh.setLevel(logging.FATAL) # Logger对象 对外暴露的接口 logger = logging.getLogger("Jet") logger.addHandler(ch) logger.addHandler(fh) logger.setLevel(logging.INFO) # 日志级别总控制,以它为最低级别 # 日志输出 logger.debug("debug级别的日志") logger.info("info级别的日志") logger.warning("warning级别的日志") logger.error("error级别的日志") logger.critical("fatal级别的日志")
参考资料
http://python.usyiyi.cn/translate/python_352/library/logging.html