Python 为什么';这段代码不能生成一个日志文件吗?

Python 为什么';这段代码不能生成一个日志文件吗?,python,Python,为什么这段代码不创建日志文件?它过去是有用的。。。我从命令行和调试器vscode运行它 我已经在信息和错误级别登录,但仍然没有任何内容 似乎至少应该创建一个空文件。但话说回来,也许python做了一个懒惰的创建 import logging import argparse import datetime import sys import platform def main(): print("something") logging.error("something") if

为什么这段代码不创建日志文件?它过去是有用的。。。我从命令行和调试器vscode运行它

我已经在信息和错误级别登录,但仍然没有任何内容

似乎至少应该创建一个空文件。但话说回来,也许python做了一个懒惰的创建

import logging
import argparse
import datetime
import sys
import platform

def main():
    print("something")
    logging.error("something")

if(__name__ == '__main__'):
    the_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    msg = "Start time: {}".format(the_time)
    print(msg)
    logging.info(msg)
    parser = argparse.ArgumentParser(prog='validation')
    parser.add_argument("-L", "--log", help="log level", required=False, default='INFO')

    args = parser.parse_args()

    numeric_level = getattr(logging, args.log.upper(), None)
    print(numeric_level)
    if not isinstance(numeric_level, int):
        raise ValueError('Invalid log level: %s' % args.log.upper())
    print("setting log level to: {} for log file validate.log".format(args.log.upper()))
    logging.basicConfig(filename='validate.log', level=numeric_level, format='%(asctime)s %(levelname)-8s %(message)s', datefmt='%d-%b-%Y %H:%M:%S')

    logging.info("Python version: {}".format(sys.version))

    main()

该函数的文档说明:

如果根记录器已经配置了处理程序,则此函数不执行任何操作,除非关键字参数
force
设置为
True

现在,您的根记录器有处理程序吗最初,否。但是,当您调用任何日志函数(
debug
info
error
等)时,它会创建一个默认处理程序。因此,在这些函数之后调用
basicConfig
不会产生任何效果

运行此程序

print(logging.getLogger().hasHandlers())
logging.error('test message')
print(logging.getLogger().hasHandlers())
产生:

$ python3 test.py
   False
   ERROR:root:test message
   True
要解决您的问题,只需添加
force=True
作为
basicConfig
的参数