2016-04-22 41 views
1

我試圖在python中使用colorama和日誌記錄模塊獲取彩色日誌。 如果我沒有給任何顏色,那麼它應該打印默認的終端顏色,但是在我的日誌中,如果沒有明確設置顏色,我將獲得以前設置的日誌的顏色。無法使用Colorama明確指定顏色時無法使用默認顏色打印日誌

下面是我的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

我使用colorama.init(自動復位= TRUE)重置顏色沒有指定時默認。 – pjain

回答

1

您需要使用init(autoreset=True)的是,作爲書面的正式文件:

如果你發現自己重複發送復位序列在每個打印年底關閉 顏色變化,則初始化(自動復位= TRUE) 將自動執行:

from colorama import init 
init(autoreset=True) 
print(Fore.RED + 'some red text') 
print('automatically back to default color again') 
+0

當我使用print時,它的工作正常,當我在日誌中使用colorama時出現問題 – pjain

+0

嘗試在腳本開始處調用'init(autoreset = True)',在'import colorama'之後並且不在'__init __ self)' –

+0

謝謝,那工作,我正在使用init(autoreset = True)__init __()函數內部。 – pjain