92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
import logging
|
|
import time
|
|
from os import path
|
|
from base_framework.base_config.current_pth import *
|
|
from concurrent_log_handler import ConcurrentRotatingFileHandler
|
|
import platform
|
|
|
|
|
|
time_flag = time.time()
|
|
d = path.dirname(__file__)
|
|
parent_path = os.path.dirname(d)
|
|
parent_path = os.path.dirname(parent_path)
|
|
# obj_tool = Tools()
|
|
|
|
if platform.system() == 'Darwin':
|
|
LOG_FILENAME = log_path + '/' + 'run.log'
|
|
else:
|
|
# Windows路径
|
|
LOG_FILENAME = log_path + '\\' + 'run.log'
|
|
if not os.path.exists(log_path):
|
|
try:
|
|
os.mkdir(log_path)
|
|
except Exception as e:
|
|
print('日志文件夹创建失败:{}'.format(e))
|
|
|
|
# MAC 路径
|
|
# LOG_FILENAME = log_path + '/' + 'run.log'
|
|
# LOG_FILENAME = (os.path.split(os.path.realpath(__file__)))[0] + '\\' + 'log\\run.log'
|
|
|
|
|
|
# Color escape string
|
|
COLOR_RED = '\033[1;31m'
|
|
COLOR_GREEN = '\033[1;32m'
|
|
COLOR_YELLOW = '\033[1;33m'
|
|
COLOR_BLUE = '\033[1;34m'
|
|
COLOR_PURPLE = '\033[1;35m'
|
|
COLOR_CYAN = '\033[1;36m'
|
|
COLOR_GRAY = '\033[1;37m'
|
|
COLOR_WHITE = '\033[1;38m'
|
|
COLOR_RESET = '\033[1;0m'
|
|
|
|
# Define log color
|
|
LOG_COLORS = {
|
|
'DEBUG': COLOR_BLUE + '%s' + COLOR_RESET,
|
|
'INFO': COLOR_GREEN + '%s' + COLOR_RESET,
|
|
'WARNING': COLOR_YELLOW + '%s' + COLOR_RESET,
|
|
'ERROR': COLOR_RED + '%s' + COLOR_RESET,
|
|
'CRITICAL': COLOR_RED + '%s' + COLOR_RESET,
|
|
'EXCEPTION': COLOR_RED + '%s' + COLOR_RESET,
|
|
}
|
|
|
|
|
|
class log_colour(logging.Formatter):
|
|
|
|
def __init__(self, fmt=None, datefmt=None):
|
|
logging.Formatter.__init__(self, fmt, datefmt)
|
|
|
|
def format(self, record):
|
|
level_name = record.levelname
|
|
msg = logging.Formatter.format(self, record)
|
|
return LOG_COLORS.get(level_name, '%s') % msg
|
|
|
|
|
|
def get_logger():
|
|
logger = logging.Logger('Automation')
|
|
logger.setLevel(0)
|
|
terminal = logging.StreamHandler()
|
|
terminal.setLevel(logging.DEBUG)
|
|
# log_file = logging.handlers.TimedRotatingFileHandler(filename=LOG_FILENAME, when="S", backupCount=3,
|
|
# encoding='utf-8', interval=5)
|
|
log_file = ConcurrentRotatingFileHandler(
|
|
LOG_FILENAME, maxBytes=5 * 1024 * 1024, backupCount=4, encoding="utf-8")
|
|
log_file.setLevel(logging.INFO)
|
|
|
|
formatter_ter = log_colour(
|
|
'%(asctime)s [tid:%(thread)d] %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
|
|
formatter_log = logging.Formatter(
|
|
'%(asctime)s [tid:%(thread)d pid:%(process)d] %(filename)s[line:%(lineno)d] %(levelname)s %(message)s')
|
|
|
|
terminal.setFormatter(formatter_ter)
|
|
log_file.setFormatter(formatter_log)
|
|
|
|
logger.addHandler(terminal)
|
|
logger.addHandler(log_file)
|
|
|
|
return logger
|
|
|
|
|
|
def set_log_file(logfilename):
|
|
global LOG_FILENAME
|
|
LOG_FILENAME = logfilename
|