Python Colorlog 未在日志文件中打印颜色

问题描述 投票:0回答:2

我使用Python colorlogs 为不同级别的日志设置不同的颜色。当我运行代码时,控制台日志是彩色的,但日志文件没有颜色。我正在使用下面的代码

def setup_logger(logfiletouse):
    """Return a logger with a default ColoredFormatter."""
    formatter = colorlog.ColoredFormatter(
        "%(log_color)s%(levelname)-8s%(reset)s %(blue)s%(message)s",
        datefmt=None,
        reset=True,
        log_colors={
            'DEBUG': 'cyan',
            'INFO': 'green',
            'WARNING': 'yellow',
            'ERROR': 'red',
            'CRITICAL': 'red',
        }
    )

    log = logging.getLogger(logfiletouse)

    handler = logging.StreamHandler()
    handler.setFormatter(formatter)
    log.addHandler(handler)
    log.setLevel(logging.DEBUG)

    return log

这是我第一次尝试使用Python colorlogs。 任何帮助表示赞赏。

python python-2.7
2个回答
4
投票

colorlog 和大多数其他终端着色库使用的彩色输出通过 shell 的转义序列更改用户终端的属性。

实际上,这将打印人类无法读取的 shell 转义序列,例如

\[\033[34m\]
。您的 shell 负责将这些序列解析为显示屏上的颜色。

纯文本文件不支持编码到其中的颜色信息,因此通常在写入文件时,所有日志记录工具都会关闭颜色支持,否则您的日志文件中会出现损坏的文本。想象一下一个纯文本文件,里面到处都是那些不可读的转义序列。

有关 shell 着色和转义序列的更多信息,您可以查看 http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html(特定于 bash,在其他 shell 上类似)


0
投票

您可以使用'nb_log'代替Python的

logging
模块:

  1. pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
    (如果需要)。

  2. pip install nb_log

  3. 代码:

    from nb_log import get_logger
    
    log = get_logger('', log_filename='log', log_path="/zzy-log/")
    log.error('your msg')
    log.debug('your msg')
    
  4. 首次使用时会在项目根目录下生成一个名为

    nb_log_config.py
    的配置文件,您可以在其中更改您想要的选项。 您可能需要修改的唯一项目是:
    DISPLAY_BACKGROUD_COLOR_IN_CONSOLE = False

  5. nb_log
    会在PyCharm的控制台自动输出最全面的颜色。

  6. 您可以单击单行中的“文件名(n)”以跳回到在 PyCharm 源代码编辑器中启动此日志输出的行!对代码调试很有帮助!

https://stackoverflow.com/a/78989175/23869714

© www.soinside.com 2019 - 2024. All rights reserved.