记录从 python2.7 到 python3.9 的消息,反之亦然

logging message from python2.7 to python3.9 vice versa

我是 python 的新手,正在尝试将应用程序从 python2.7 移植到 python 3.9,但在将消息记录到文件时遇到问题

我已经设置了日志记录配置
logging.basicConfig(filename='example.log', encoding='utf-8', level=logging.DEBUG)

尝试将日志写入文件时出现错误。

logging.info ( "CRL_TO_PEM_CMD =",CRL_TO_PEM_CMD ) 在 2.7 和 3.9

中给出以下错误

TypeError: not all arguments converted during string formatting

logging.info ( f"CRL_TO_PEM_CMD ={CRL_TO_PEM_CMD}" ) 在 3.9 中工作正常,在 2.7

中出错

如何编写适用于 2.7 和 3.9 的语句?

如果CRL_TO_PEM_CMD是字符串,可以使用:

logging.info ("CRL_TO_PEM_CMD =" + CRL_TO_PEM_CMD)

否则,您需要先将其转换为 str

logging.info ("CRL_TO_PEM_CMD =" + str(CRL_TO_PEM_CMD))

顺便说一句,你可以使用字符串格式,它同时支持Python 2和3。它可以用来连接每种类型的数据都带有字符串。

例如

logging.info ("CRL_TO_PEM_CMD ={}".format(CRL_TO_PEM_CMD))

Python2 和 Python3 上的默认日志记录样式都是 %-formatting aka printf-formatting。在 msg 中使用 % 样式的占位符,logging 模块将根据需要插入其他参数。

logging.info("CRL_TO_PEM_CMD = %s", CRL_TO_PEM_CMD )

The msg is the message format string, and the args are the arguments which are merged into msg using the string formatting operator.