五个级别的日志debug、info、warning、error、critical,默认级别为warning
通过logging.basicConfig设置日志的显示参数,再通过logging.debug等方法输出日志,这种方法要么只能输出日志到屏幕,要么只能输出日志到一个文件中,无法同时输出到屏幕和文件。
import logging logging.basicConfig( level=logging.WARNING, #设置级别为WARN级别,默认就为WARNING级别 filename='log.log', #设置日志输出到脚本所在路径下的log.log文件,默认输出到当前屏幕 filemode='w', #默认为写模式,默认为追加模式 format='%(asctime)s %(filename)s[%(lineno)d] %(message)s' ) logging.debug('debug message') logging.info('info message') logging.warning('warning message') logging.error('error message') logging.critical('critical message') #输出文件如下 #2018-11-21 10:22:14,183 log.py[10] warning message #2018-11-21 10:22:14,183 log.py[11] error message #2018-11-21 10:22:14,184 log.py[12] critical message
以上,在logging.basicConfig的format中可设置日志显示的各种参数
%(asctime)s:以字符串形式显示当前时间,默认格式为2018-11-20 21:06:04,862
%(name)s:登录用户
%(pathname)s:调用日志输出函数的模块的完整路径
%(filename)s:调用日志输出函数的模块的文件名
%(module)s:调用日志输出函数的模块名
%(funcName)s:调用日志输出函数的函数名
%(lineno)d:调用日志输出函数的语句所在代码行
%(process)d:进程id
%(thread)d:线程id
%(threadName)s:线程名
%(levelno)s:数字形式的日志级别
%(levelname)s:文本形式的日志级别
%(created)f:当前时间,用unix标准的表示时间的浮点数表示
%(relativeCreated)d:输出日志信息时的、自logger创建以来的毫秒数
通过logging.getLogger()方法生成对象并设置各种参数,再调用对象的debug等方法显示日志
def logger(): #定义文件 logger=logging.getLogger() #创建一个logger对象,默认为根用户 fh=logging.FileHandler('test_log') #创建向文件输出日志的对象,参数为目标文件的名称 sh=logging.StreamHandler() #创建向屏幕输出日志的对象 fm=logging.Formatter('%(asctime)s %(name)s %(message)s') #创建格式对象 fh.setFormatter(fm) #设置向文件输出日志的对象的格式 sh.setFormatter(fm) #设置向屏幕输出日志的对象的格式 logger.addHandler(fh) #logger对象增加向文件输出日志的功能 logger.addHandler(sh) #logger对象增加向屏幕输出日志的功能 logger.setLevel('DEBUG') #设置logger对象的日志显示级别 return logger logger = logger() logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message')
logger=logging.getLogger()默认创建的是根用户的对象,如果加参数例如‘test’,表示创建的是根用户下的test用户,如果再要创建test下的子用户,需加通过.加参数例如'test.son',且如果参数相同,则创建的多个对象都是同一个对象,对其设置的格式、日志等级等,都以最后一个为准。
如果创建根用户对象和根用户的子对象,或者一个对象和它的子对象,则子对象的日志会输出两遍,即子对象有几层父对象,它的日志就会输出即便。
logger=logging.getLogger('phh') logger1 = logging.getLogger('phh.girl') fh=logging.FileHandler('test_log') sh=logging.StreamHandler() fm=logging.Formatter('%(asctime)s %(name)s %(message)s') fh.setFormatter(fm) sh.setFormatter(fm) logger.addHandler(fh) logger.addHandler(sh) logger1.addHandler(sh) logger.setLevel('WARNING') logger1.setLevel('ERROR') logger.debug('debug message') logger.info('info message') logger.warning('warning message') logger.error('error message') logger.critical('critical message') logger1.debug('1 debug message') logger1.info('1 info message') logger1.warning('1 warning message') logger1.error('1 error message') logger1.critical('1 critical message') #输出内容如下 # 2018-11-21 21:03:51,999 phh warning message # 2018-11-21 21:03:51,999 phh error message # 2018-11-21 21:03:51,999 phh critical message # 2018-11-21 21:03:52,000 phh.girl 1 error message # 2018-11-21 21:03:52,000 phh.girl 1 error message # 2018-11-21 21:03:52,000 phh.girl 1 critical message # 2018-11-21 21:03:52,000 phh.girl 1 critical message