#python #logging
#python #ведение журнала
Вопрос:
Я привык к библиотекам ведения журнала Java (например, log4j), которые не требуют какой-либо программной настройки, каждый помещает хорошо известное имя файла (например, log4j.xml ) в одном ожидаемом пути (например, в начальном каталоге программы), который выбирается автоматически и используется для настройки таких вещей, как файл журнала иформат.
Я знаю, что было бы нетрудно реализовать то же самое в Python, но я не люблю изобретать колеса, такая функция уже доступна в стандартном модуле ведения журнала или где-то еще?
Ответ №1:
В Python нет таких известных имен файлов конфигурации журнала для logging
модуля.
Однако вы все равно можете использовать logging.config.fileConfig
для настройки своего регистратора на основе файла конфигурации, который находится в формате, совместимом с configparser. Или, если вам нужен более детальный контроль, вы можете использовать этот logging.config.dictConfig
метод, он лучше всего подходит, если вы хотите сохранить свою конфигурацию в другом формате, например json
, yaml
, и т.д.
Вы можете ознакомиться с документацией для получения дополнительной информации: https://docs.python.org/3/library/logging.config.html#configuration-functions
Ответ №2:
Я бы порекомендовал вам взглянуть на кулинарную книгу ведения журнала Python и руководство по ведению журнала.
Следующий пример кода взят из раздела Ведение журнала в файл на странице HOWTO и может быть использован в качестве отправной точки.
import logging
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)
logging.debug('This message should go to the log file')
logging.info('So should this')
logging.warning('And this, too')
logging.error('And non-ASCII stuff, too, like Øresund and Malmö')
Для более подробного контроля над форматированием, взгляните на форматеры из модуля «ведение журнала». И, наконец, если вы заинтересованы в том, чтобы журналы были как можно более похожи на log4j, этот модуль может быть вам интересен.
Комментарии:
1. Это то, что я уже делаю, я хотел бы иметь возможность избежать любого шага настройки.