当前位置: 移动技术网 > IT编程>脚本编程>Python > 从零开始的Python学习Episode 14——日志操作

从零开始的Python学习Episode 14——日志操作

2018年10月27日  | 移动技术网IT编程  | 我要评论

白健恩肌肉,蒸舒康,游戏专用电脑

日志操作

 

一、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里面设置。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网