mirror of
https://github.com/httprunner/httprunner.git
synced 2026-07-11 23:41:44 +08:00
fix: logger setup mupltiple times
This commit is contained in:
@@ -1,5 +1,3 @@
|
|||||||
# encoding: utf-8
|
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
@@ -8,6 +6,9 @@ from colorlog import ColoredFormatter
|
|||||||
|
|
||||||
init(autoreset=True)
|
init(autoreset=True)
|
||||||
|
|
||||||
|
LOG_LEVEL = "INFO"
|
||||||
|
LOG_FILE_PATH = None
|
||||||
|
|
||||||
log_colors_config = {
|
log_colors_config = {
|
||||||
'DEBUG': 'cyan',
|
'DEBUG': 'cyan',
|
||||||
'INFO': 'green',
|
'INFO': 'green',
|
||||||
@@ -15,11 +16,27 @@ log_colors_config = {
|
|||||||
'ERROR': 'red',
|
'ERROR': 'red',
|
||||||
'CRITICAL': 'red',
|
'CRITICAL': 'red',
|
||||||
}
|
}
|
||||||
logger = logging.getLogger("httprunner")
|
loggers = {}
|
||||||
|
|
||||||
|
|
||||||
def setup_logger(log_level, log_file=None):
|
def setup_logger(log_level, log_file=None):
|
||||||
|
global LOG_LEVEL
|
||||||
|
LOG_LEVEL = log_level
|
||||||
|
|
||||||
|
if log_file:
|
||||||
|
global LOG_FILE_PATH
|
||||||
|
LOG_FILE_PATH = log_file
|
||||||
|
|
||||||
|
|
||||||
|
def get_logger(name=None):
|
||||||
"""setup logger with ColoredFormatter."""
|
"""setup logger with ColoredFormatter."""
|
||||||
|
name = name or "httprunner"
|
||||||
|
if name in loggers:
|
||||||
|
return loggers[name]
|
||||||
|
|
||||||
|
_logger = logging.getLogger(name)
|
||||||
|
|
||||||
|
log_level = LOG_LEVEL
|
||||||
level = getattr(logging, log_level.upper(), None)
|
level = getattr(logging, log_level.upper(), None)
|
||||||
if not level:
|
if not level:
|
||||||
color_print("Invalid log level: %s" % log_level, "RED")
|
color_print("Invalid log level: %s" % log_level, "RED")
|
||||||
@@ -29,21 +46,24 @@ def setup_logger(log_level, log_file=None):
|
|||||||
if level >= logging.INFO:
|
if level >= logging.INFO:
|
||||||
sys.tracebacklimit = 0
|
sys.tracebacklimit = 0
|
||||||
|
|
||||||
|
_logger.setLevel(level)
|
||||||
|
|
||||||
|
if LOG_FILE_PATH:
|
||||||
|
handler = logging.FileHandler(LOG_FILE_PATH, encoding="utf-8")
|
||||||
|
else:
|
||||||
|
handler = logging.StreamHandler(sys.stdout)
|
||||||
|
|
||||||
formatter = ColoredFormatter(
|
formatter = ColoredFormatter(
|
||||||
u"%(log_color)s%(bg_white)s%(levelname)-8s%(reset)s %(message)s",
|
u"%(log_color)s%(bg_white)s%(levelname)-8s%(reset)s %(message)s",
|
||||||
datefmt=None,
|
datefmt=None,
|
||||||
reset=True,
|
reset=True,
|
||||||
log_colors=log_colors_config
|
log_colors=log_colors_config
|
||||||
)
|
)
|
||||||
|
|
||||||
if log_file:
|
|
||||||
handler = logging.FileHandler(log_file, encoding="utf-8")
|
|
||||||
else:
|
|
||||||
handler = logging.StreamHandler()
|
|
||||||
|
|
||||||
handler.setFormatter(formatter)
|
handler.setFormatter(formatter)
|
||||||
logger.addHandler(handler)
|
_logger.addHandler(handler)
|
||||||
logger.setLevel(level)
|
|
||||||
|
loggers[name] = _logger
|
||||||
|
return _logger
|
||||||
|
|
||||||
|
|
||||||
def coloring(text, color="WHITE"):
|
def coloring(text, color="WHITE"):
|
||||||
@@ -59,9 +79,11 @@ def color_print(msg, color="WHITE"):
|
|||||||
def log_with_color(level):
|
def log_with_color(level):
|
||||||
""" log with color by different level
|
""" log with color by different level
|
||||||
"""
|
"""
|
||||||
|
_logger = get_logger()
|
||||||
|
|
||||||
def wrapper(text):
|
def wrapper(text):
|
||||||
color = log_colors_config[level.upper()]
|
color = log_colors_config[level.upper()]
|
||||||
getattr(logger, level.lower())(coloring(text, color))
|
getattr(_logger, level.lower())(coloring(text, color))
|
||||||
|
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user