我试图在python中使用colorama和logging模块获取彩色日志。 如果我没有给出任何颜色,那么它应该打印默认的终端颜色,但是在我的日志中,如果没有明确设置颜色,我会得到以前设置的日志的颜色。
以下是我的setup_logging.yml文件
import os
import yaml
import logging.config
def setup_logging(
default_path='logging.yml', default_level=logging.INFO, env_key='LOG_CFG'):
path = os.path.join('/etc', 'module', default_path)
value = os.getenv(env_key, None)
if value:
path = value
if os.path.exists(path):
with open(path, 'rt') as f:
config = yaml.load(f.read())
logging.config.dictConfig(config)
else:
logging.basicConfig(level=default_level)
Logging.yml文件
version: 1
disable_existing_loggers: True
formatters:
default:
format: "%(asctime)s - %(name)s - %(levelname)s - \n %(message)s"
handlers:
console:
class: logging.StreamHandler
level: INFO
formatter: default
stream: ext://sys.stdout
info_file_handler:
class: logging.handlers.RotatingFileHandler
level: INFO
formatter: default
filename: /var/log/jsnapy/test.log
maxBytes: 10485760 # 10MB
backupCount: 20
encoding: utf8
我已经删除了我的日志功能代码:
import logging
import colorama
class Test:
def __init__(self):
self.logger = logging.getLogger(__name__)
colorama.init(autoreset=True)
setup_logging.setup_logging()
def testing(self):
self.logger.debug(colorama.Fore.RED + "this is a debugging message")
self.logger.info(colorama.Fore.BLUE+"this is an informational message")
self.logger.warn(colorama.Fore.BLUE+"this is a warning message")
self.logger.error(colorama.Fore.YELLOW + "this is an error message")
self.logger.critical("this is a critical message")
t = Test()
t.testing()
如果没有明确指定颜色,如何在日志中获取默认颜色。
答案 0 :(得分:1)
您需要使用init(autoreset=True)
,正如官方文档中所述:
如果您发现自己重复发送重置序列以关闭 每次打印结束时颜色都会发生变化,然后是init(autoreset = True) 将自动化:
from colorama import init
init(autoreset=True)
print(Fore.RED + 'some red text')
print('automatically back to default color again')