我使用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。 任何帮助表示赞赏。
colorlog 和大多数其他终端着色库使用的彩色输出通过 shell 的转义序列更改用户终端的属性。
实际上,这将打印人类无法读取的 shell 转义序列,例如
\[\033[34m\]
。您的 shell 负责将这些序列解析为显示屏上的颜色。
纯文本文件不支持编码到其中的颜色信息,因此通常在写入文件时,所有日志记录工具都会关闭颜色支持,否则您的日志文件中会出现损坏的文本。想象一下一个纯文本文件,里面到处都是那些不可读的转义序列。
有关 shell 着色和转义序列的更多信息,您可以查看 http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x329.html(特定于 bash,在其他 shell 上类似)
您可以使用'nb_log'代替Python的
logging
模块:
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
(如果需要)。
pip install nb_log
代码:
from nb_log import get_logger
log = get_logger('', log_filename='log', log_path="/zzy-log/")
log.error('your msg')
log.debug('your msg')
首次使用时会在项目根目录下生成一个名为
nb_log_config.py
的配置文件,您可以在其中更改您想要的选项。
您可能需要修改的唯一项目是:DISPLAY_BACKGROUD_COLOR_IN_CONSOLE = False
。
nb_log
会在PyCharm的控制台自动输出最全面的颜色。
您可以单击单行中的“文件名(n)”以跳回到在 PyCharm 源代码编辑器中启动此日志输出的行!对代码调试很有帮助!