""""""
"""
# 日志模块:记录
"""
import logging
# logging.basicConfig(filename='access.log',
# format = '%(asctime)s - %(name)s-%(levelname)s-%(module)s: %(message)s',
# datefmt = '%Y-%m-%d %H:%M:%S %p',
# level = 30,)
"""
# 日志分为五个等级 等级:地震的强度
"""
# logging.debug('debug日志') # 10
# logging.info('info日志') # 20
# logging.warning('warning日志') # 30
# logging.error('error日志') # 40
# logging.critical('critical日志') # 50
"""
1.乱码
2.日志格式
3.如何既打印到终端又写到文件中
"""
"""
1.logger对象:负责产生日志
2.filter对象:过滤日志(了解)
3.handler对象:控制日志输出的位置(文件/终端)
4.formmater对象:规定日志内容的格式
"""
import logging
# 1.logger对象:负责产生日志
logger = logging.getLogger('转账记录')
# 2.filter 对象 :过滤日志(了解)
# 3.handler对象:控制日志输出的位置(文件/终端)
hd1 = logging.FileHandler('al.log',encoding='utf-8')# 输出到文件中
hd2 = logging.FileHandler('a2.log',encoding='utf-8') # 输出到文件中
hd3 = logging.StreamHandler() # 输出到终端
# 4.formmater对象:规定日志内容的格式
fm1 = logging.Formatter(fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s',
datefmt='%Y-%m-%d %H:%M:%S %p',)
fm2 = logging.Formatter(
fmt = '%(asctime)s - %(name)s: %(message)s',
datefmt='%Y-%m-%d',
)
# 5.给logger对象绑定handler对象
logger.addHandler(hd1)
logger.addHandler(hd2)
logger.addHandler(hd3)
# 6.给handler绑定formmate对象
hd1.setFormatter(fm2)
hd2.setFormatter(fm2)
hd3.setFormatter(fm2)
# 7.设置日志等级
logger.setLevel(20)
# 8.记录日志
logger.debug('啊,烦死了')
# 日志的配置字典
1 # -*- coding: utf-8 -*- 2 import traceback 3 from datetime import datetime 4 from log.logger import LogBase 5 6 logbase = LogBase() 7 8 9 def console_log(func): 10 '''console log handling 11 12 ''' 13 14 def wrapper(*args, **kw): 15 logger = logbase.get_logger(task_info="console_log") 16 # depth = len(traceback.format_stack()) 17 # indent = depth-21 if depth-21 >= 0 else 0 18 indent = len(traceback.format_stack()) 19 logger.info('[' + 20 datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 21 '] ' + (' '*indent) + func.__name__ + ' ' + str(args) + 22 ' ' + str(kw)) 23 r = func(*args, **kw) 24 logger.info('[' + 25 datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 26 '] ' + (' '*indent) + func.__name__ + ' successfully') 27 return r 28 return wrapper 29 30 31 def log_debug(log): 32 logger = logbase.get_logger(task_info="debug") 33 # depth = len(traceback.format_stack()) 34 # indent = depth-21 if depth-21 >= 0 else 0 35 indent = len(traceback.format_stack()) 36 logger.debug('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 37 '] ' + (' '*indent) + "[\033[0;36m DEBUG \033[0m] " + 38 str(log)) 39 40 41 def log_info(log): 42 logger = logbase.get_logger(task_info="info") 43 # depth = len(traceback.format_stack()) 44 # indent = depth-21 if depth-21 >= 0 else 0 45 indent = len(traceback.format_stack()) 46 logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 47 '] ' + (' '*indent) + "[\033[0;36m INFO \033[0m] " + str(log)) 48 49 def log_status(log): 50 logger = logbase.get_logger(task_info="info") 51 indent = len(traceback.format_stack()) 52 logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + '] ' 53 + (' '*indent) + "[\033[0;36m INFO \033[0m]" + "\n" + 54 "---------"*25 + str(log) + "\n" + "---------"*20) 55 56 57 def log_warn(log): 58 logger = logbase.get_logger(task_info="warn") 59 # depth = len(traceback.format_stack()) 60 # indent = depth-21 if depth-21 >= 0 else 0 61 indent = len(traceback.format_stack()) 62 logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 63 '] ' + (' '*indent) + "[\033[0;33m WARN \033[0m] " + str(log)) 64 65 66 def log_error(log): 67 logger = logbase.get_logger(task_info="error") 68 # depth = len(traceback.format_stack()) 69 # indent = depth-21 if depth-21 >= 0 else 0 70 indent = len(traceback.format_stack()) 71 logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + 72 '] ' + (' '*indent) + "[\033[0;31m ERROR \033[0m] " + str(log))
# code 案例
# -*- coding: utf-8 -*-
import traceback
from datetime import datetime
from log.logger import LogBase
logbase = LogBase()
def console_log(func):
'''console log handling
'''
def wrapper(*args, **kw):
logger = logbase.get_logger(task_info="console_log")
# depth = len(traceback.format_stack())
# indent = depth-21 if depth-21 >= 0 else 0
indent = len(traceback.format_stack())
logger.info('[' +
datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + func.__name__ + ' ' + str(args) +
' ' + str(kw))
r = func(*args, **kw)
logger.info('[' +
datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + func.__name__ + ' successfully')
return r
return wrapper
def log_debug(log):
logger = logbase.get_logger(task_info="debug")
# depth = len(traceback.format_stack())
# indent = depth-21 if depth-21 >= 0 else 0
indent = len(traceback.format_stack())
logger.debug('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + "[\033[0;36m DEBUG \033[0m] " +
str(log))
def log_info(log):
logger = logbase.get_logger(task_info="info")
# depth = len(traceback.format_stack())
# indent = depth-21 if depth-21 >= 0 else 0
indent = len(traceback.format_stack())
logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + "[\033[0;36m INFO \033[0m] " + str(log))
def log_status(log):
logger = logbase.get_logger(task_info="info")
indent = len(traceback.format_stack())
logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] + '] '
+ (' '*indent) + "[\033[0;36m INFO \033[0m]" + "\n" +
"---------"*25 + str(log) + "\n" + "---------"*20)
def log_warn(log):
logger = logbase.get_logger(task_info="warn")
# depth = len(traceback.format_stack())
# indent = depth-21 if depth-21 >= 0 else 0
indent = len(traceback.format_stack())
logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + "[\033[0;33m WARN \033[0m] " + str(log))
def log_error(log):
logger = logbase.get_logger(task_info="error")
# depth = len(traceback.format_stack())
# indent = depth-21 if depth-21 >= 0 else 0
indent = len(traceback.format_stack())
logger.info('[' + datetime.now().strftime('%Y-%m-%d %H:%M:%S.%f')[:-3] +
'] ' + (' '*indent) + "[\033[0;31m ERROR \033[0m] " + str(log))
浙公网安备 33010602011771号