mirror of
https://github.com/GradienceTeam/Gradience.git
synced 2024-07-03 17:59:56 +00:00
backend/logger: add optional exc_info option to Logger
This commit is contained in:
parent
c0ca56b6ff
commit
c06d90900a
|
@ -17,6 +17,7 @@
|
|||
# along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
import logging
|
||||
import traceback
|
||||
|
||||
from gradience.backend.constants import build_type
|
||||
|
||||
|
@ -42,10 +43,27 @@ class Logger(logging.getLoggerClass()):
|
|||
'fmt': '[%(name)s] %(message)s'
|
||||
}
|
||||
|
||||
def __set_level_color(self, level, message: str):
|
||||
def __set_exc_info(self, exc):
|
||||
exc_tb = traceback.extract_tb(exc.__traceback__)
|
||||
exc_info = ""
|
||||
|
||||
if len(exc_tb) > 1:
|
||||
exc_info += f"\nExc: {exc}\nAt: "
|
||||
for i, tb in enumerate(exc_tb):
|
||||
if i == len(exc_tb) - 1:
|
||||
exc_info += f"{tb[0]}:{tb[1]}"
|
||||
else:
|
||||
exc_info += f"{tb[0]}:{tb[1]}\n " # Yes, it must have those four spaces at the end
|
||||
elif len(exc_tb) == 1:
|
||||
exc_info += f"\nExc: {exc}\nAt: {exc_tb[-1][0]}:{exc_tb[-1][1]}"
|
||||
|
||||
return exc_info
|
||||
|
||||
def __set_level_color(self, level: str, message: str):
|
||||
if message is not None and "\n" in message:
|
||||
message = message.replace("\n", "\n\t") + "\n"
|
||||
message = message.replace("\n", "\n\t")
|
||||
color_id = self.log_colors[level]
|
||||
|
||||
return "\033[1;%dm%s:\033[0m %s" % (color_id, level.upper(), message)
|
||||
|
||||
def __init__(self, logger_name=None, formatter=None):
|
||||
|
@ -75,20 +93,26 @@ class Logger(logging.getLoggerClass()):
|
|||
handler.setFormatter(formatter)
|
||||
self.root.addHandler(handler)
|
||||
|
||||
def debug(self, message, **kwargs):
|
||||
self.root.debug(self.__set_level_color("debug", str(message)), )
|
||||
def debug(self, message):
|
||||
self.root.debug(self.__set_level_color("debug", str(message)))
|
||||
|
||||
def info(self, message, **kwargs):
|
||||
self.root.info(self.__set_level_color("info", str(message)), )
|
||||
def info(self, message):
|
||||
self.root.info(self.__set_level_color("info", str(message)))
|
||||
|
||||
def warning(self, message, **kwargs):
|
||||
self.root.warning(self.__set_level_color("warning", str(message)),)
|
||||
def warning(self, message, exc):
|
||||
if exc:
|
||||
message += self.__set_exc_info(exc)
|
||||
self.root.warning(self.__set_level_color("warning", str(message)))
|
||||
|
||||
def error(self, message, **kwargs):
|
||||
self.root.error(self.__set_level_color("error", str(message)), )
|
||||
def error(self, message, exc):
|
||||
if exc:
|
||||
message += self.__set_exc_info(exc)
|
||||
self.root.error(self.__set_level_color("error", str(message)))
|
||||
|
||||
def critical(self, message, **kwargs):
|
||||
self.root.critical(self.__set_level_color("critical", str(message)), )
|
||||
def critical(self, message, exc):
|
||||
if exc:
|
||||
message += self.__set_exc_info(exc)
|
||||
self.root.critical(self.__set_level_color("critical", str(message)))
|
||||
|
||||
def set_silent(self):
|
||||
self.root.handlers = []
|
||||
|
|
Loading…
Reference in a new issue