python如何使用logging打印log

简单的控制台输出

logging.debug(‘This is debug message’)

logging.info(‘This is info message’)

logging.warning(‘This is warning message’)

logging.error(‘This is error message’)

logging.critical(‘This is critical message’)


日志级别:

CRITICAL > ERROR > WARNING > INFO > DEBUG

默认情况下,日志输出级别在warning及以上


日志相关配置:logging.basicConfig函数

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='myapp.log',

filemode='w')

如果不配置filename、filemode,则默认输出到控制台中。


logging.basicConfig函数各参数:

filename:指定日志文件名

filemode:和file函数意义相同,指定日志文件的打开模式,'w'或'a'

format:指定输出的格式和内容,format可以输出很多有用信息,如上例所示:

%(levelno)s:打印日志级别的数值

%(levelname)s:打印日志级别名称

%(pathname)s:打印当前执行程序的路径,其实就是sys.argv[0]

%(filename)s:打印当前执行程序名

%(funcName)s:打印日志的当前函数

%(lineno)d:打印日志的当前行号

%(asctime)s:打印日志的时间

%(thread)d:打印线程ID

%(threadName)s:打印线程名称

%(process)d:打印进程ID

%(message)s:打印日志信息

datefmt:指定时间格式,同time.strftime()

level:设置日志级别,默认为logging.WARNING

stream:指定将日志的输出流,可以指定输出到sys.stderr,sys.stdout或者文件,默认输出到sys.stderr,当stream和filename同时指定时,stream被忽略


logging.StreamHandler:日志输出到流,可以是sys.stderr、sys.stdout或者文件

logging.FileHandler:日志输出到文件


打印log到控制台上&文件:

import logging

#第一步,创建一个logger

logger = logging.getLogger(‘mylogger’)

logger.setLevel(logging.INFO)

#第二步,创建一个handler,用于写入日志文件

logfile = ‘E:/project/http_api_test/logs/test.log’

fh =logging.FileHandler(logfile,mode=’w’)

fh.setLevel(logging.DEBUG)

#第三步,创建一个handler,用于输出到控制台

ch = logging.StreamHandler()

ch.setLevel(logging.WARNING)

#定义handler的输出格式

formatter = logging.Formatter(‘%(asctime)s

%(filename)s[line:%(lineno)d] %(levelname)s %(message)s',datefmt='%a, %d %b%Y %H:%M:%S’)

fh.setFormatter(formatter)

ch.setFormatter(formatter)

#第五步,将logger添加到handler里面

logger.addHandler(fh)

logger.addHandler(ch)

你可能感兴趣的:(python如何使用logging打印log)