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