python logging模块

logging作用:

打印日志信息,帮助相关工作人员快速定位问题

logging默认打印级别为warning. logging级别优先级为critical>error>debug>warning>info>debug

 1 import logging
 2 logging.basicConfig(level = logging.DEBUG,
 3                     format = '%(asctime)s%(filename)s%(levelname)s %(lineno)d %(message)s%(process)s',
 4                     datefmt = '%Y--%m--%d %H:%M:%S',
 5 
 6                     filemode = 'w'
 7                   )
 8 
 9 
10 logging.debug("a debug")
11 logging.info("a info")
12 logging.warning("a warning")
13 logging.error("a error")
14 logging.critical("a critical")
logging.basicConfig设置log打印级别,格式,文件输出还是控制台输出

formatter格式:
 1 formatter,定义了最终log信息的顺序,结构和内容,我喜欢用这样的格式 '[%(asctime)s] [%(levelname)s] %(message)s', '%Y-%m-%d %H:%M:%S' 2 %(name)s Logger的名字
 3 %(levelname)s 文本形式的日志级别
 4 %(message)s 用户输出的消息
 5 %(asctime)s 字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
 6 %(levelno)s 数字形式的日志级别
 7 %(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
 8 %(filename)s 调用日志输出函数的模块的文件名
 9 %(module)s  调用日志输出函数的模块名
10 %(funcName)s 调用日志输出函数的函数名
11 %(lineno)d 调用日志输出函数的语句所在的代码行
12 %(created)f 当前时间,用UNIX标准的表示时间的浮 点数表示
13 %(relativeCreated)d 输出日志信息时的,自Logger创建以 来的毫秒数
14 %(thread)d 线程ID。可能没有
15 %(threadName)s 线程名。可能没有
16 %(process)d 进程ID。可能没有
datefmt = '%Y--%m--%d %H:%M:%S':表示时间的输出格式
filename = 'text.txt',:表示将log信息打印到文档中
filemode = 'w':表示log追加方式w覆盖之前的log信息,a追加log信息

2.如果想将log同时打印到文档和控制台上,使用以下方式:

 1 # -*- coding: utf-8 -*-
 2 
 3 import logging
 4 import sys
 5 
 6 # 获取logger实例,如果参数为空则返回root logger
 7 logger = logging.getLogger("AppName")
 8 
 9 # 指定logger输出格式
10 formatter = logging.Formatter('%(asctime)s %(levelname)-8s: %(message)s')
11 
12 # 文件日志
13 file_handler = logging.FileHandler("test.log")
14 file_handler.setFormatter(formatter)  # 可以通过setFormatter指定输出格式
15 
16 # 控制台日志
17 console_handler = logging.StreamHandler(sys.stdout)
18 console_handler.formatter = formatter  # 也可以直接给formatter赋值
19 
20 # 为logger添加的日志处理器
21 logger.addHandler(file_handler)
22 logger.addHandler(console_handler)
23 
24 # 指定日志的最低输出级别,默认为WARN级别
25 logger.setLevel(logging.INFO)
26 
27 # 输出不同级别的log
28 logger.debug('this is debug info')
29 logger.info('this is information')
30 logger.warn('this is warning message')
31 logger.error('this is error message')
32 logger.fatal('this is fatal message, it is same as logger.critical')
33 logger.critical('this is critical message')

 

 
posted @ 2018-01-14 10:21  秦艳莉  阅读(129)  评论(0)    收藏  举报