Python logging日志系统
写我小小的日志系统
配置logging有以下几种方式:
1)使用Python代码显式的创建loggers, handlers和formatters并分别调用它们的配置函数;
2)创建一个日志配置文件,标签式的注明【loggers】、【handlers】、【formatters】、【filters】4大组件,前3者必传,后者选传,然后使用fileConfig()
函数来读取该文件的内容;
3)创建一个包含【loggers】、【handlers】、【formatters】、【filters】4大组件配置信息的字典dict,然后把它传递给dictConfig()
函数;
我目前采用的就是第3种方式。
1 # -*- coding: utf-8 -*- 2 import logging 3 from flask import Flask 4 from logging.config import dictConfig 5 6 app = Flask(__name__) 7 8 dictConfig({ 9 'version': 1, 10 'formatters': { 11 'standard': { 12 'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(message)s' 13 , 'datefmt': '%Y-%m-%d %H:%M:%S'} 14 , 'detail': { 15 'format': '%(asctime)s.%(msecs)d|%(thread)d|%(levelname)s|%(filename)s:%(funcName)s line %(lineno)d' 16 , 'datefmt': '%Y-%m-%d %H:%M:%S' 17 }, 18 }, 19 'filters': { 20 }, 21 'handlers': { 22 'default': { 23 'class': 'logging.handlers.RotatingFileHandler', # 将日志消息发送到磁盘文件,并支持日志文件按大小切割 24 'filename': '../logs/info.log', # 日志输出文件 25 'maxBytes': 1024 * 1024 * 5, # 文件大小 26 'formatter': 'standard', # 使用哪种formatters日志格式 27 }, 28 'console': { 29 'class': 'logging.StreamHandler', 30 'formatter': 'standard' 31 }, 32 'error': { 33 'level': 'ERROR', 34 'class': 'logging.handlers.RotatingFileHandler', 35 'filename': '../logs/error.log', 36 'maxBytes': 1024 * 1024 * 5, 37 'backupCount': 5, # 备份份数 38 'formatter': 'detail', 39 }, 40 'request_handler': { 41 'level': 'DEBUG', 42 'class': 'logging.handlers.RotatingFileHandler', 43 'filename': '../logs/script.log', 44 'maxBytes': 1024 * 1024 * 5, 45 'backupCount': 5, 46 'formatter': 'standard', 47 } 48 }, 49 'loggers': { 50 'flask': { 51 'handlers': ['default', 'console', 'error'], 52 'level': 'DEBUG', 53 'propagate': True 54 }, 55 'flask.request': { 56 'handlers': ['request_handler'], 57 'level': 'DEBUG', 58 'propagate': False, 59 }, 60 'weTest.flask': { 61 'handlers': ['error'], 62 'level': 'ERROR', 63 'propagate': True 64 } 65 } 66 }) 67 68 logger = logging.getLogger('flask') 69 logger.setLevel(logging.DEBUG) 70 71 if __name__ == '__main__': 72 try: 73 logger.info('info info') 74 logger.debug('debug info') 75 print 1 / 0 76 except Exception as err: 77 logger.error('error message:{0}'.format(err.message), exc_info=True) # 将异常异常信息添加到日志消息中
其他.py文件中应用
1 # test.py 2 3 from utils.log_helper import logger 4 5 try: 6 logger.info('hello world') 7 print 1/0 8 except Exception as err: 9 logger.error('error message:{0}'.format(err.message), exc_info=True)
参考&&转载
Python logging 官网 https://docs.python.org/2/library/logging.html
博文 https://www.cnblogs.com/yyds/p/6901864.html