基于这个答案,启用详细日志记录的更简单方法
让我们来看看这个 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
还是一个常见的问题,为什么会发生这种情况?
我在 Python 3.6.7 上。