Python:如何在打印到文件时为日志着色?

时间:2019-03-14 14:23:40

标签: python python-3.x windows logging colors

我正在做的事情有一点背景。我正在通过工业控制器上的不同编程语言运行一些python脚本。由于我没有直接运行python脚本,因此无法查看终端上的任何打印或日志语句,因此我需要将详细的日志发送到日志文件。

由于调试时会记录很多信息,所以我想找到一种方法来为日志文件上色,例如coloredlogs对打印到终端上的日志进行着色。我看过coloredlogs,但似乎只有在使用VIM时,它才能将彩色日志打印到文件中。有谁知道一种使用可通过诸如写字板之类的程序打开的python将彩色日志打印到文件的方法吗? (也许是.rtf文件)。

1 个答案:

答案 0 :(得分:1)

使用Windows PowerShell Get-Content函数来打印包含ANSI escape sequences的文件为日志着色是一种解决方案。

例如:

import coloredlogs
import logging

# Create a logger object.
logger = logging.getLogger(__name__)

# Create a filehandler object
fh = logging.FileHandler('spam.log')
fh.setLevel(logging.DEBUG)

# Create a ColoredFormatter to use as formatter for the FileHandler
formatter = coloredlogs.ColoredFormatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(formatter)
logger.addHandler(fh)

# Install the coloredlogs module on the root logger
coloredlogs.install(level='DEBUG')

logger.debug("this is a debugging message")
logger.info("this is an informational message")
logger.warning("this is a warning message")
logger.error("this is an error message")
logger.critical("this is a critical message")

打开Windows PowerShell时,您可以使用Get-Content .\spam.log以彩色打印日志。