Код: Выделить всё
class S3Handler(logging.StreamHandler):
def __init__(self):
super().__init__(io.StringIO())
# create unique target location and counter
# counter for rotating file names
def emit(self, record):
# emit record
# if buffer is large enough: store data to file
def close(self):
# store buffer to file
< /code>
Это работает как очарование для одного процесса. Я настраиваю регистратор в файле конфигурации и использую logging.fileconfig
Код: Выделить всё
LOG = logging.getLogger(__name__)
< /code>
везде на уровне модуля. Но мой проект использует Луиджи в качестве библиотеки, которая разгибает подпроцессы, и вещи становятся немного странными: < /p>
Различные процессы используют одну и ту же «копию», поэтому они используют одно и то же уникальное целевое местоположение и будут перезаписать данные друг друга. Это имеет смысл, но, выясняя это, я также увидел неожиданное закрытие обработчиков, которые я не мог на самом деле закрепить. Я нашел _at_fork_reinit ()
Подробнее здесь: https://stackoverflow.com/questions/795 ... -processes