1 Star 0 Fork 9

zhangjing/arkui-developer-test-tool

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
logger.py 2.69 KB
一键复制 编辑 原始数据 按行查看 历史
liyujie 提交于 2023-05-25 11:09 . fix output log
import logging
import colorlog
class Singleton(object):
def __init__(self, cls):
self._cls = cls
self._instance = {}
def __call__(self):
if self._cls not in self._instance:
self._instance[self._cls] = self._cls()
return self._instance[self._cls]
@Singleton
class Logging(object):
def __init__(self):
pass
def create(self):
log_colors_config = {
'DEBUG': 'blue',
'INFO': 'green',
'WARNING': 'yellow',
'ERROR': 'red',
'CRITICAL': 'bold_red',
}
logger = logging.getLogger('logger_name')
# 输出到控制台
console_handler = logging.StreamHandler()
# 输出到文件
file_handler = logging.FileHandler(filename='build.log', mode='a', encoding='utf8')
# 日志级别,logger 和 handler以最高级别为准,不同handler之间可以不一样,不相互影响
logger.setLevel(logging.DEBUG)
console_handler.setLevel(logging.DEBUG)
file_handler.setLevel(logging.INFO)
# 日志输出格式
file_formatter = logging.Formatter(
fmt='[%(asctime)s.%(msecs)03d][%(levelname)s] : %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
console_formatter = colorlog.ColoredFormatter(
# fmt='%(log_color)s[%(asctime)s.%(msecs)03d] %(filename)s -> %(funcName)s line:%(lineno)d [%(levelname)s] : %(message)s',
fmt='%(log_color)s[%(asctime)s.%(msecs)03d][%(levelname)s] : %(message)s',
datefmt='%Y-%m-%d %H:%M:%S',
log_colors=log_colors_config
)
console_handler.setFormatter(console_formatter)
file_handler.setFormatter(file_formatter)
# 重复日志问题:
# 1、防止多次addHandler;
# 2、loggername 保证每次添加的时候不一样;
# 3、显示完log之后调用removeHandler
if not logger.handlers:
logger.addHandler(console_handler)
logger.addHandler(file_handler)
console_handler.close()
file_handler.close()
return logger
class Logger():
@staticmethod
def info(content):
logger = Logging().create()
logger.info(content)
@staticmethod
def debug(content):
logger = Logging().create()
logger.debug(content)
@staticmethod
def warning(content):
logger = Logging().create()
logger.warning(content)
@staticmethod
def error(content):
logger = Logging().create()
logger.error(content)
if __name__ == '__main__':
Logger.info("111111")
Logger.warning("111111")
Logger.debug("111111")
Logger.error("111111")
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/roumatine/arkui-developer-test-tool.git
[email protected]:roumatine/arkui-developer-test-tool.git
roumatine
arkui-developer-test-tool
arkui-developer-test-tool
master

搜索帮助