我同意您应该使用日志记录模块,但是您不能像其他一些答案显示的那样仅使用格式字符串来正确执行此操作,因为它们没有解决您记录包含逗号的消息的情况。
如果您需要一个能够正确转义消息(或其他字段,我想)中的任何特殊字符的解决方案,您将必须编写一个自定义格式化程序并设置它。
logger = logging.getLogger()
formatter = MyCsvFormatter()
handler = logging.FileHandler(filename, "w")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(level)
您显然必须实现 MyCsvFormatter 类,该类应继承自 logging.Formatter 并覆盖 format() 方法
class MyCsvFormatter(logging.Formatter):
def __init__(self):
fmt = "%(levelname)s,%(message)s" # Set a format that uses commas, like the other answers
super(MyCsvFormatter, self).__init__(fmt=fmt)
def format(self, record):
msg = record.getMessage()
# convert msg to a csv compatible string using your method of choice
record.msg = msg
return super(MyCsvFormatter, self).format(self, record)
注意:我以前做过类似的事情,但没有测试过这个特定的代码示例
至于对消息进行实际转义,这是一种可能的方法:
Python - 将数据写入 csv 格式作为字符串(不是文件)