Python: Как раскрасить логи при печати в файл? - PullRequest
0 голосов
/ 14 марта 2019

Небольшой контекст того, что я делаю.Я запускаю некоторые скрипты Python через другой язык программирования на промышленном контроллере.Так как я не запускаю сценарии python напрямую, я не могу смотреть какие-либо операторы print или log с терминала, поэтому мне нужно отправить подробные журналы в файл журнала.

Поскольку при отладке мы записываем много информации, я хотел найти способ окрасить файл журнала, такой как coloredlogs, в журналы, напечатанные на терминале.Я посмотрел на coloredlogs, но похоже, что он может печатать только цветные логи в файлы при использовании VIM.Кто-нибудь знает способ печати цветных журналов в файл с помощью Python, который можно открыть с помощью такой программы, как WordPad?(возможно файл .rtf).

1 Ответ

1 голос
/ 21 марта 2019

Для решения проблемы можно использовать функцию 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 для печати журналов в цвете.

...