我同意你應該使用日誌模塊,但你真的不能做正確只是一個格式字符串像一些其他的答案顯示,因爲他們做的不能解決記錄包含逗號的消息的情況。
如果你需要一個解決方案,將正確轉義消息中的任何特殊字符(或其他領域,我想),你會寫一個自定義的格式進行設置。
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 - write data into csv format as string (not file)
您應該使用logging.Formatter實例與輸出CSV行的格式。 –