Python3 logging 模块
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 logging 模块相关的知识,希望对你有一定的参考价值。
Python3 logging模块
日志模块:
用于便捷记录日志且线程安全的模块
CRITICAL = 50
FATAL = CRITICAL
ERROR = 40
WARNING = 30
WARN = WARNING
INFO =20
DEBUG = 10
NOTSET = 0
设置为debug
import logging
1 import logging 2 logging.debug(‘debug‘) 3 logging.info(‘info‘) 4 logging.warning(‘warning‘) 5 logging.error(‘error‘) 6 logging.critical(‘critical‘) 7 8 logging.basicConfig(filename = ‘access.log‘,format = ‘%(asctime)s-%(name)s-%(levelname)s-%(module)s:%(message)s‘, 9 datefmt = ‘%Y-%m-%d %H:%M:%S %p‘, 10 level = 10) 11 logging.debug(‘debug‘) 12 formatter1=logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s‘, 13 datefmt=‘%Y-%m-%d %H:%M:%S %p‘,) 14 fh1 = logging.FileHandler(‘test1.log‘) 15 fh2 = logging.FileHandler(‘test2.log‘) 16 fh3 = logging.FileHandler(‘test3.log‘) 17 ch = logging.StreamHandler() 18 19 fh1.setFormatter(formatter1) 20 fh2.setFormatter(formatter1) 21 fh3.setFormatter(formatter1) 22 ch.setFormatter(formatter1) 23 24 logger1 = logging.getLogger(‘egon‘) 25 logger1.setLevel(10) 26 logger1.addHandler(fh1) 27 logger1.addHandler(fh2) 28 logger1.addHandler(fh3) 29 logger1.addHandler(ch) 30 logger1.debug(‘debug‘) 31 logger1.info(‘info‘) 32 logger1.warning(‘warning‘) 33 logger1.critical(‘critical‘)
logging配置模板
1 import os 2 3 import logging.config 4 5 6 7 # 定义三种日志输出格式 开始 8 9 10 11 standard_format = ‘[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]‘ 12 13 ‘[%(levelname)s][%(message)s]‘ #其中name为getlogger指定的名字 14 15 16 17 simple_format = ‘[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s‘ 18 19 20 21 id_simple_format = ‘[%(levelname)s][%(asctime)s] %(message)s‘ 22 23 24 25 # 定义日志输出格式 结束 26 27 28 29 logfile_dir = os.path.dirname(os.path.abspath(__file__)) # log文件的目录 30 31 32 33 logfile_name = ‘all2.log‘ # log文件名 34 35 36 37 # 如果不存在定义的日志目录就创建一个 38 39 if not os.path.isdir(logfile_dir): 40 41 os.mkdir(logfile_dir) 42 43 44 45 # log文件的全路径 46 47 logfile_path = os.path.join(logfile_dir, logfile_name) 48 49 50 51 # log配置字典 52 53 LOGGING_DIC = { 54 55 ‘version‘: 1, 56 57 ‘disable_existing_loggers‘: False, 58 59 ‘formatters‘: { 60 61 ‘standard‘: { 62 63 ‘format‘: standard_format 64 65 }, 66 67 ‘simple‘: { 68 69 ‘format‘: simple_format 70 71 }, 72 73 ‘id_simple‘: { 74 75 ‘format‘: id_simple_format 76 77 }, 78 79 }, 80 81 ‘filters‘: {}, 82 83 ‘handlers‘: { 84 85 #打印到终端的日志 86 87 ‘console‘: { 88 89 ‘level‘: ‘DEBUG‘, 90 91 ‘class‘: ‘logging.StreamHandler‘, # 打印到屏幕 92 93 ‘formatter‘: ‘simple‘ 94 95 }, 96 97 #打印到文件的日志,收集info及以上的日志 98 99 ‘default‘: { 100 101 ‘level‘: ‘DEBUG‘, 102 103 ‘class‘: ‘logging.handlers.RotatingFileHandler‘, # 保存到文件 104 105 ‘formatter‘: ‘standard‘, 106 107 ‘filename‘: logfile_path, # 日志文件 108 109 ‘maxBytes‘: 1024*1024*5, # 日志大小 5M 110 111 ‘backupCount‘: 5, 112 113 ‘encoding‘: ‘utf-8‘, # 日志文件的编码,再也不用担心中文log乱码了 114 115 }, 116 117 ‘boss‘: { 118 119 ‘level‘: ‘DEBUG‘, 120 121 ‘class‘: ‘logging.handlers.RotatingFileHandler‘, # 保存到文件 122 123 ‘formatter‘: ‘standard‘, 124 125 ‘filename‘: ‘boss.log‘, # 日志文件 126 127 ‘maxBytes‘: 1024 * 1024 * 5, # 日志大小 5M 128 129 ‘backupCount‘: 5, 130 131 ‘encoding‘: ‘utf-8‘, # 日志文件的编码,再也不用担心中文log乱码了 132 133 }, 134 135 }, 136 137 ‘loggers‘: { 138 139 #logger1=logging.getLogger(__name__)拿到的logger配置 140 141 ‘‘: { 142 143 ‘handlers‘: [‘default‘, ‘console‘], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕 144 145 ‘level‘: ‘DEBUG‘, 146 147 ‘propagate‘: True, # 向上(更高level的logger)传递 148 149 }, 150 151 #logger1=logging.getLogger(‘collect‘)拿到的logger配置 152 153 ‘collect‘: { 154 155 ‘handlers‘: [‘boss‘,], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕 156 157 ‘level‘: ‘DEBUG‘, 158 159 ‘propagate‘: True, # 向上(更高level的logger)传递 160 161 }, 162 163 }, 164 165 } 166 167 def load_my_logging_cfg(): 168 169 logging.config.dictConfig(LOGGING_DIC) # 导入上面定义的logging配置 170 171 # logger = logging.getLogger(__name__) # 生成一个log实例 172 173 # logger.info(‘It works!‘) # 记录该文件的运行状态 174 175 if __name__ == ‘__main__‘: 176 177 load_my_logging_cfg()
调用 logging 配置模板
1 import logging 2 import my_log_settings 3 my_log_settings.load_my_logging_cfg() 4 5 logger1=logging.getLogger(__name__) 6 logger2=logging.getLogger(‘collect‘) 7 8 logger1.debug(‘默认日志的debug‘) 9 logger2.debug(‘给老板一封信‘) 10 logger2.debug(‘给前台MM一封信‘)
以上是关于Python3 logging 模块的主要内容,如果未能解决你的问题,请参考以下文章