如果使用Colorama未明确指定颜色,则无法以默认颜色打印日志

时间:2016-04-22 11:54:28

标签: python logging colorama

我试图在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()

如果没有明确指定颜色,如何在日志中获取默认颜色。

1 个答案:

答案 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')