Я знаю, что библиотека Python logging
позволяет выполнять «круговое» ведение журнала по нескольким файлам журнала. То, что я пытаюсь сделать, это просто один файл, foo.log
, который всегда < = B байт в размере; если следующий append собирается переложить его на B, то вещи удаляются сверху. Я был бы так же счастлив указать max в терминах событий.Python Logging - Circular Log (последние n записей)
Так что, если бы это было схема ротации файлов, а также пункт # 4 превышена B, вы должны:
foo.log.1 foo.log.2
--------- ---------
African Swallow
or
European
Я хотел бы просто ветер с:
foo.log
-------
or
European
Swallow
EDIT: основываясь на комментариях ниже, люди на законных основаниях отметили, что это менее оптимальный формат. Мотивация исходит от отладки. У меня есть сценарии, использующие psycopg2
для выполнения запросов на удаленном сервере, который застрял в 2002 году, грубо говоря, без подключения к Интернету. После того, как он зарегистрирует все, что он отправляет в db, а затем проверяет, что журнал является самым быстрым способом увидеть, где что-то пошло не так, и я должен указать кому-то другому, чтобы сделать это. Я не хочу вводить усложнение, чтобы выяснить, какие это текущий файл журнала. Текущее решение - это просто написать журнал и удалить его, если он станет слишком большим.
Это * очень неэффективный формат журнала *, потому что, как только вы нажмете ограничение на байты, он требует переписывания * всего журнала * при каждом добавлении новой строки. Нет простого способа удалить строки сверху, когда строки журнала имеют переменную длину. –
Таким образом, нет существующего модуля или кода, который позволяет это сделать; вы в конечном итоге переписываете свой файл журнала каждый раз, когда хотите что-либо добавить. Вы можете написать собственный обработчик журнала, но производительность будет такой мрачной, что это просто не стоит. –