Моя текущая программа состоит из бесконечного цикла набора событий, при входе в каждую из итераций присваивается уникальный идентификатор.
class Logging:
# a unique identifier for each logging handler, updated below
log_id = None
# logger handler
log = None
@staticmethod
def reset_logger_with_new_id():
log = logging.getLogger(str(uuid.uuid4()))
log.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s [%(name)s] %(message)s')
handler_console = logging.StreamHandler()
level = logging.DEBUG if 'DEV' in os.environ else logging.INFO
handler_console.setLevel(level)
handler_console.setFormatter(formatter)
log.addHandler(handler_console)
# set the class logging handler
Logging.log = log
if __name__ == "__main__":
# initialization
Logging.reset_logger_with_new_id()
Logging.log.info("initialization things happening")
# things happening
while True:
Logging.reset_logger_with_new_id()
# the actions loop
Logging.log.info("something in the action loop")
something()
Logging.log.info("something else in the action loop")
something_else()
Выходные данные
2019-11-09 22:03:28,998 [07a48712-cf6f-49ca-ba87-c47ec9703d0c] initialization things happening
2019-11-09 22:04:29,615 [2e5f53cf-df08-4b4e-bdf9-2820a0e80a43] something in the action loop
2019-11-09 22:04:38,704 [2e5f53cf-df08-4b4e-bdf9-2820a0e80a43] something else in the action loop
2019-11-09 22:05:38,765 [21a41a51-338b-4a9f-8ed5-cd0ac40b3c20] something in the action loop
2019-11-09 22:05:47,834 [21a41a51-338b-4a9f-8ed5-cd0ac40b3c20] something else in the action loop
(...)
Поскольку в каждой итерации создается новый регистратор:
- , следует ли мне заботиться о чем-то растущем и в конечном итоге переполненном?
- если так - как уничтожить существующий регистратор? (предыдущий, который я бы уничтожил в начале
reset_logger_with_new_id()
)
В документации упоминается close()
, но мне не ясно, является ли этоэто то, что я должен назвать, чтобы избежать проблемы выше.