Sono d'accordo che è necessario utilizzare il modulo di registrazione, ma non si può davvero farlo correttamente con solo una stringa di formato come alcune delle altre risposte mostrano, come fanno non affrontare la situazione in cui si registra un messaggio che contiene una virgola.
Se è necessaria una soluzione che eviti correttamente caratteri speciali nel messaggio (o altri campi, suppongo), è necessario scrivere un formattatore personalizzato e impostarlo.
logger = logging.getLogger()
formatter = MyCsvFormatter()
handler = logging.FileHandler(filename, "w")
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(level)
Avrete ovviamente bisogno di implementare la classe MyCsvFormatter, che dovrebbe ereditare da logging.Formatter e sovrascrivere il metodo 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)
Nota: ho fatto qualcosa di simile prima, ma non hanno testato questo particolare esempio di codice
Per quanto riguarda facendo la fuga effettivo del messaggio, ecco un possibile approccio: Python - write data into csv format as string (not file)
È necessario utilizzare un'istanza di logging.Formatter con un formato che emetta righe csv. –