Как я могу записать, сколько раз что-то случалось с несколькими файлами? - PullRequest
1 голос
/ 13 июля 2011

Я хочу сохранить сводную информацию о количестве случаев, когда происходит конкретная вещь, и о том, когда возникает что-то очень важное. Я приведу пример ...

Мой код устанавливает соединение SSH и запускает команды. Исключение возникает и обрабатывается каждый раз, когда скрипт теряет соединение с ssh-сервером. Допустим, этот тип исключения обрабатывается несколькими файлами по-разному. Как я могу вести учет количества обработок? Это не относится к исключениям. Например, если я запускаю команду и получаю определенный ответ, я хочу отметить, что это произошло. Мне нужно, чтобы все это было зарегистрировано (я уже знаю, как настроить регистратор), когда сценарий завершится.

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

tldr; Как я могу вести учет того, сколько раз что-то происходит / когда что-то происходит в нескольких файлах, чтобы я мог регистрировать это, когда скрипт заканчивается?

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Попробуйте создать подкласс logging.Handler и переопределить метод handle или emit, чтобы проверить отправляемое сообщение и при необходимости увеличить счетчик где-нибудь, а затем добавить этот обработчик в корневой регистратор вашего приложения следующим образом:

import logging
counter = 0
class CounterHandler(logging.Handler):
    def emit(self, record):
        global counter
        if record.msg == "Connection lost. Reconnecting.":
            counter += 1

root_logger = logging.getLogger()
root_logger.addHandler(CounterHandler())

Вы можете расширить это, чтобы сделать его более общим или устойчивым, но это один из способов выполнить то, что вы ищете.

0 голосов
/ 13 июля 2011

Я предполагаю, что multiple files означает, что у вас запущено несколько отдельных сценариев, и вы хотите записать сводную сводку событий, происходящих во всех этих сценариях.

Если у вас есть один сценарий, это легко сделать, поддерживая dict и выгружая его в файл журнала, или можно перезаписать один файл сводки, для нескольких сценариев вы можете запустить отдельный сервер журналирования, который используется всеми сценариями для ведения журнала или, по крайней мере, для добавления и вывода сводной информации, в качестве альтернативы вы можете использовать общую базу данных с блокировкой таблицы

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...