You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

logger.py 1.9 kB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. import logging
  2. import os, sys
  3. from termcolor import colored
  4. class _ColorfulFormatter(logging.Formatter):
  5. def __init__(self, *args, **kwargs):
  6. super(_ColorfulFormatter, self).__init__(*args, **kwargs)
  7. def formatMessage(self, record):
  8. log = super(_ColorfulFormatter, self).formatMessage(record)
  9. if record.levelno == logging.WARNING:
  10. prefix = colored("WARNING", "yellow", attrs=["blink"])
  11. elif record.levelno == logging.ERROR or record.levelno == logging.CRITICAL:
  12. prefix = colored("ERROR", "red", attrs=["blink", "underline"])
  13. else:
  14. return log
  15. return prefix + " " + log
  16. def get_logger(name='Kamal', output=None, color=True):
  17. logger = logging.getLogger(name)
  18. logger.setLevel(logging.DEBUG)
  19. logger.propagate = False
  20. # STDOUT
  21. stdout_handler = logging.StreamHandler( stream=sys.stdout )
  22. stdout_handler.setLevel( logging.DEBUG )
  23. plain_formatter = logging.Formatter(
  24. "[%(asctime)s] %(name)s %(levelname)s: %(message)s", datefmt="%m/%d %H:%M:%S" )
  25. if color:
  26. formatter = _ColorfulFormatter(
  27. colored("[%(asctime)s %(name)s]: ", "green") + "%(message)s",
  28. datefmt="%m/%d %H:%M:%S")
  29. else:
  30. formatter = plain_formatter
  31. stdout_handler.setFormatter(formatter)
  32. logger.addHandler(stdout_handler)
  33. # FILE
  34. if output is not None:
  35. if output.endswith('.txt') or output.endswith('.log'):
  36. os.makedirs(os.path.dirname(output), exist_ok=True)
  37. filename = output
  38. else:
  39. os.makedirs(output, exist_ok=True)
  40. filename = os.path.join(output, "log.txt")
  41. file_handler = logging.FileHandler(filename)
  42. file_handler.setFormatter(plain_formatter)
  43. file_handler.setLevel(logging.DEBUG)
  44. logger.addHandler(file_handler)
  45. return logger

一站式算法开发平台、高性能分布式深度学习框架、先进算法模型库、视觉模型炼知平台、数据可视化分析平台等一系列平台及工具,在模型高效分布式训练、数据处理和可视分析、模型炼知和轻量化等技术上形成独特优势,目前已在产学研等各领域近千家单位及个人提供AI应用赋能