欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-06-24 08:49:44
日志操作 一、logging模块 %(message)s 日志信息 %(levelno)s 日志级别 datefmt 设置时间格式 filename 设置日志保存的路径 level 设置日志记录的级别 filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“ ......

日志操作

 

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