从零开始的Python学习Episode 14——日志操作
日志操作
一、logging模块
%(message)s 日志信息
%(levelno)s 日志级别
datefmt 设置时间格式
filename 设置日志保存的路径
level 设置日志记录的级别
filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”,“a”表示在原有的日志之后增添日志,“w”表示清除原有的日志后再添加新的日志。
配置日志级别、日志格式、输出位置
import logging 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='example.log', filemode='w') logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message')
在文件example.log中查看输出:
wed, 24 oct 2018 19:04:25 test2.py[line:9] debug debug message
wed, 24 oct 2018 19:04:25 test2.py[line:10] info info message
wed, 24 oct 2018 19:04:25 test2.py[line:11] warning warning message
wed, 24 oct 2018 19:04:25 test2.py[line:12] error error message
wed, 24 oct 2018 19:04:25 test2.py[line:13] critical critical message
%(name)s logger的名字
%(levelno)s 数字形式的日志级别
%(levelname)s 文本形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcname)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用unix标准的表示时间的浮 点数表示
%(relativecreated)d 输出日志信息时的,自logger创建以 来的毫秒数
%(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(thread)d 线程id。可能没有
%(threadname)s 线程名。可能没有
%(process)d 进程id。可能没有
%(message)s用户输出的消息
二、logger对象
logger是一个树形层级结构,输出信息之前都要获得一个logger(如果没有显示的获取则自动创建
并使用root logger,如第一个例子所示)。
logger = logging.getlogger()返回一个默认的logger也即root logger,并应用默认的日志级别、
handler和formatter设置。
当然也可以通过logger.setlevel(lel)指定最低的日志级别,可用的日志级别有logging.debug、
logging.info、logging.warning、logging.error、logging.critical。
import logging logger = logging.getlogger() logger.setlevel(logging.debug) fh = logging.filehandler('example.log',mode = 'w') ch = logging.streamhandler() formatter = logging.formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') fh.setformatter(formatter) ch.setformatter(formatter) logger.addhandler(fh) logger.addhandler(ch) logger.debug('logger debug message') logger.info('logger info message') logger.warning('logger warning message') logger.error('logger error message') logger.critical('logger critical message')
这里的文件模式在filehandler里面设置。
上一篇: 关于C语言的部分BUG
下一篇: 为了准备后事
推荐阅读