一、logging相关配置
1 import logging 2 """ 3 asctime:运行时间 4 name:主模块名称 5 levelname:日志级别 INFO、DEBUG 6 message:日志内容 7 """ 8 # 日志配置 9 logging.basicConfig(level=logging.DEBUG, format='%(asctime)s-%(name)s - 10 %(levelname)s-%(message)s') 11 12 # 声明了一个 Logger 对象,它就是日志输出的主类 13 # __name__:执行主模块的名称 14 logger= logging.getLogger(__name__) 15 # 日志信息内容输出 16 logger.info('信息') 17 # 日志信息调试输出 18 logger.debug("调试") 19 # 日志信息警告输出 20 logger.warning("警告") 21 logger.info("完成")
注:
1 # 另一种设置日志级别的方式,对实例化对象进行级别配置 2 logger.setLevel(level=logging.DEBUG)
- filename:即日志输出的文件名,如果指定了这个信息之后,实际上会启用 FileHandler(日志存入文件中),而不再是 StreamHandler(控制台输出),这样日志信息便会输出到文件中了。
- filemode:这个是指定日志文件的写入方式,有两种形式,w:清除后写入,一种是 a:追加写入。
- format:指定日志信息的输出格式
- datefmt:指定时间的输出格式。
- style:如果 format 参数指定了,这个参数就可以指定格式化时的占位符风格,如 %、{、$ 等。
- level:指定日志输出的类别,程序会输出大于等于此级别的信息。
- stream:在没有指定 filename 的时候会默认使用 StreamHandler,这时 stream 可以指定初始化的文件流。
- handlers:可以指定日志处理时所使用的 Handlers,必须是可迭代的。
扩展:
- level对应等级
- format属性详情
- 部分属性详情:
二、Handler用法:
1 import logging 2 from logging.handlers import HTTPHandler 3 import sys 4 5 6 # 实例化logging一个对象 7 logger = logging.getLogger(__name__) 8 # 配置日志级别为DEBUG 9 logger.setLevel(level=logging.DEBUG) 10 # 指定信息输出格式 11 formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') 12 13 # streamHandler 14 # 指定日志文件并创建一个handler对象 15 stream_handler = logging.StreamHandler(sys.stdout) 16 stream_handler.setLevel(level=logging.DEBUG) 17 # 将输出格式和handler绑定 18 stream_handler.setFormatter(formatter) 19 # 将handler对象和logger(日志对象)绑定 20 logger.addHandler(stream_handler) 21 22 # FileHandler 23 file_handler = logging.FileHandler('out.log') 24 file_handler.setLevel(logging.INFO) 25 file_handler.setFormatter(formatter) 26 logger.addHandler(file_handler) 27 28 # HTTPHandler 29 http_handler = HTTPHandler(host='localhost:8001', url='log', method='POST') 30 logger.addHandler(http_handler) 31 32 # 日志输出信息 33 logger.info('Info') 34 logger.debug('Debug') 35 logger.warning('Warning') 36 logger.info('Finish')
三、Formatter