[英]Suppress ANSI codes while logging to file - python logging module
使用下面的python代碼段將輸出記錄到屏幕和日志文件中。 但是,當使用ANSI轉義碼突出顯示幾行時,如下圖所示,它在屏幕上打印得很漂亮,但是由於ANSI轉義碼,日志文件中的文本變得混亂。
logger.info("\033[0;30;47m-\033[00m" * 10)
在日志文件中,它包含ANSI轉義碼,如下所示。
2017-05-07 02:28:52,360 INFO ^ [[0; 30; 47m-^ [[00m ^ [[0; 30; 47m-^ [[00m ^ [[0; 30; 47m-^ [[00m ^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [ [00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30; 47m- ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30; 47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[ 0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[ 00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30;47米 - ^ [[00米^ [[0; 30; 47m- ^
def initialize_logging(options):
logger = logging.getLogger(__name__)
formatter = logging.Formatter('%(asctime)s %(levelname)s\t%(message)s')
level = logging.__dict__.get(options.loglevel.upper(),logging.DEBUG)
logger.setLevel(level)
if not options.quiet:
hdlr = logging.StreamHandler(sys.stderr)
hdlr.setFormatter(formatter)
logger.addHandler(hdlr)
logfile = options.logfile
if options.clean and os.path.isfile(logfile):
os.remove(logfile)
hdlr2 = logging.FileHandler(logfile)
hdlr2.setFormatter(formatter)
logger.addHandler(hdlr2)
return logger
如何僅在登錄日志文件時避免ANSI轉義碼? 任何建議都會有所幫助。
耐心等待,因為我是新手,所以我不確定您的代碼段的上下文是什么。 因此,如果這沒有幫助,請原諒我,但是由於您未使用任何格式化程序,您是否只能記錄原始字符串?
logger.info(r"\033[0;30;47m-\033[00m" * 10)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.