Вам советуют , а не , переопределить корневой регистратор так, как вы описываете.В общем случае вам следует использовать корневой регистратор только для небольших сценариев - для более крупных приложений рекомендуется использовать
logger = logging.getLogger(__name__)
в каждом модуле, в котором вы ведете журналирование, а затем вызывать logger.info ()и т. д.
Если все, что вам нужно, это войти в файл, почему бы просто не добавить обработчик файла в корневой логгер?Вы можете использовать, например,
if __name__ == '__main__':
logging.basicConfig(filename='experimental.log', filemode='w')
main() # or whatever your main entry point is called
или через файл конфигурации.
Обновление: Когда я говорю «вам советуют», я имею в виду, здесьв этом ответе ;-) Хотя вы можете не столкнуться с какими-либо проблемами в вашем сценарии, не рекомендуется перезаписывать атрибут модуля, который не был предназначен для перезаписи.Например, корневой регистратор является экземпляром другого класса (который не является частью общедоступного API), и в механизме ведения журнала есть другие ссылки на него, которые все еще указывают на старое значение.Любой из этих фактов может привести к трудным для отладки проблемам.Поскольку пакет ведения журнала позволяет достичь желаемого (например, войти в файл, а не в консоль) несколькими способами, вам следует использовать предоставленные механизмы.