Как настроить базовую запись в журнал для записи в файл журнала, а также распечатать вывод на терминал?
Я использую basicConfig для настройки ведения журнала для модулей и субмодулей.
Проблема:Если я использую logging.basicConfig (filename = LOGFILE,…), то больше не будет вывод терминала из модуля логирования.Если я добавлю еще один FileHandler для файла журнала, он будет использоваться только основным модулем, а не субмодулями, например:
if __name__ == "__main__":
logging.basicConfig(
level=logging.DEBUG,
format="%(name)s (%(lineno)s): %(message)s",
filename=LOGFILE
)
# add logfile
formatter = logging.Formatter("%(name)s (%(lineno)s): %(message)s")
logfile = logging.FileHandler(LOGFILE)
logfile.setLevel("DEBUG")
logfile.setFormatter(formatter)
Использование Python 2.7
Обновление
Простонайдено https://stackoverflow.com/a/13733863/1907997, но пример не работает, нет вывода на терминал или файл:
if __name__ == "__main__":
logFormatter = "%(name)s (%(lineno)s): %(message)s"
rootLogger = logging.getLogger()
fileHandler = logging.FileHandler(LOGFILE)
fileHandler.setFormatter(logFormatter)
fileHandler.setLevel("DEBUG")
rootLogger.addHandler(fileHandler)
consoleHandler = logging.StreamHandler()
consoleHandler.setFormatter(logFormatter)
consoleHandler.setLevel("DEBUG")
rootLogger.addHandler(consoleHandler)
Информация для более новой версии Python:
.Начиная с Python 3.3 logging.basicConfig () может принимать обработчики аргументов ключевых слов https://stackoverflow.com/a/46098711/1907997