Python: Как раскрасить журналы при печати в файл?

#python #python-3.x #windows #logging #colors

#python #python-3.x #Windows #ведение журнала #Цвет

Вопрос:

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

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

Комментарии:

1. вы можете поместить любую информацию о цвете (в виде обычного текста), а затем использовать какой-либо просмотрщик журналов (например, vim) для разбора на цвета. или просто фильтровать по ключевым словам. на самом деле я думаю, что уровней журнала (Информация, ошибка и т.д.) Достаточно.

2. Я надеялся, что мне не нужно будет устанавливать средство просмотра журналов на промышленный контроллер. Контроллер использует Windows, поэтому я могу, если необходимо, но я надеялся использовать одну из встроенных программ. При этом как мне добавить информацию о цвете в выходные данные журнала?

3. если цвета нет, какой редактор вы используете для проверки журнала? блокнот?

4. В настоящее время я использую notepad, потому что я не использую цвета. Когда я начну использовать цвета, я, вероятно, буду использовать wordpad.

5. notepad может выделять общие файлы журналов (а если нет, найдите плагин). почему бы не попробовать? вам нужен хороший редактор (я не подразумеваю, что notepad лучший).

Ответ №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 для цветной печати журналов.

Комментарии:

1. Я думаю, это сработает для того, что я хочу. Цветовая схема Powershell по умолчанию не очень хороша, но я могу просто использовать type spam.log в командной строке. Я не знал, что escape-последовательности ANSI могут быть прочитаны Powershell и командной строкой. Спасибо.