Files
smart-management-auto-test/base_framework/public_tools/log.py
qiaoxinjiu 6994b185a3 addproject
2026-01-22 19:10:37 +08:00

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