Исходя из этого ответа, Более простой способ включить подробное ведение журнала
Давайте возьмем этот скрипт Python.
import argparse
import logging
def main():
import argparse
import logging
parser = argparse.ArgumentParser(
description='A test script for http://stackoverflow.com/q/14097061/78845'
)
parser.add_argument("-v", "--verbose", help="increase output verbosity",
action="store_true")
args = parser.parse_args()
if args.verbose:
logging.basicConfig(level=logging.DEBUG)
logging.info('Shown in debug and info mode')
logging.debug('Only shown in debug mode')
if __name__ == "__main__":
logging.info('Starting script!')
main()
Запуск этого скрипта из терминала как python -m verbose -v
ничего печатать не будет.
Если вы прокомментируете строку logging.info('Starting script!')
из файла, как в
if __name__ == "__main__":
#logging.info('Starting script!')
main()
, тогда ведение журнала работает, как и ожидалось.
Это выглядит какпопытка вызвать logging.info()
до определения basicConfig
полностью отключит ведение журнала.
Это ошибка в logging
или обычная ошибка и почему это происходит?
IЯ на Python 3.6.7.