Python Обработчик системного журнала, умножающий сообщения - PullRequest
0 голосов
/ 27 января 2020

Я не мог найти этот вопрос, заданный ранее, поэтому, если у него есть извинения, я сталкиваюсь с тем, что повторяющиеся повторяющиеся сообщения записываются в системный журнал на моем сервере Ubuntu 18.04LTS через python3 протоколирование. Код:

import sys
import json
import uuid
import logging
import logging.handlers


def write_to_syslog(message):
    my_logger = logging.getLogger('AppLogger')
    my_logger.setLevel(logging.DEBUG)

    handler = logging.handlers.SysLogHandler(address='/dev/log', facility='local3')

    my_logger.addHandler(handler)

    # generate random uuid for logging and append to message
    message += ' LoggingUUID="' + str(uuid.uuid4()) + '"' 
    my_logger.debug(message)


def main(json_list, environment, username):
    # de-duplicate list
    dedup_list = list(set(json.loads(json_list)))

    # iterate list items
    for item in dedup_list:
        # if blank don't do anything
        if not item:
            continue

        # remove whitespace
        item = item.strip()

        # logging to syslog
        message = 'User="' + str(username) + '" Function="DeleteItem" AffectedItem="' \
            + str(item) + '" Environment="' + str(environment) + '"'
        write_to_syslog(message)

        # make requests call
        # parse requests content
        # print success or error


if __name__ == "__main__":
    json_list = sys.argv[1]
    environment = sys.argv[2]
    username = sys.argv[3]
    main(json_list, environment, username)
    sys.exit(0)

Я ожидаю увидеть 1 запись в системном журнале на элемент списка, но на самом деле я вижу 1 запись для первого элемента списка, затем 2 записи для второго элемента списка, три записи для третий элемент списка и так далее.

Как ни странно, я вижу только идентичные записи (поэтому рандомизированное uuid4 () одинаково в повторяющихся сообщениях), что заставляет меня поверить, что my for l oop вызывает write_to_syslog () только один раз. Пример вывода системного журнала:

Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item0" Environment="PROD" LoggingUUID="7c2bc225-e599-4fb3-be92-5cb7de8eb5a3"
Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item1" Environment="PROD" LoggingUUID="b8b712b5-6b07-614c-1540-7d13264d3cdg"
Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item1" Environment="PROD" LoggingUUID="b8b712b5-6b07-614c-1540-7d13264d3cdg"
Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item2" Environment="PROD" LoggingUUID="4cf865e7-9dc5-48a4-68d9-a7ac0bd682f5"
Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item2" Environment="PROD" LoggingUUID="4cf865e7-9dc5-48a4-68d9-a7ac0bd682f5"
Jan 25 02:56:18 hostname User="user0" Function="DeleteItem" AffectedItem="item2" Environment="PROD" LoggingUUID="4cf865e7-9dc5-48a4-68d9-a7ac0bd682f5"

Итак, вопрос в том, почему я вижу повторяющиеся сообщения столько же раз, сколько и номер элемента, который в данный момент запускается в для l oop?

...