简单的控制台输出
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)