簡體   English   中英

記錄文件時禁止顯示ANSI代碼-Python記錄模塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM