Я не мог найти этот вопрос, заданный ранее, поэтому, если у него есть извинения, я сталкиваюсь с тем, что повторяющиеся повторяющиеся сообщения записываются в системный журнал на моем сервере 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?