2017-03-31 51 views
1

我有一個記錄器記錄到文件,但偶爾遇到TM字符時它會引發異常並且記錄不會記錄。Python記錄特殊字符到文件拋出異常

logging.basicConfig(filename='C:/Users/Administrator/Desktop/logs/log.log', 
    level=logging.INFO, 
    format='%(asctime)s - %(message)s') 

它有什麼問題?

編輯:

這些都是時間和消息明顯。該消息通過websocket作爲字符串化對象{log:log}從google chrome接收,然後使用data = json.loads(obj)進行解析。然後data [「log」]字符串進入消息。

+1

什麼是TM角色? 'asctime'和'message'是什麼? – wallyk

+0

商標字符,它是說有些字符不能被翻譯成unicode或類似的東西。 – Anonymous

+0

嘗試在腳本的頂部放置'# - * - coding:UTF-8 - * - '。 – najjarammar

回答

4

而不是允許logger打開文件,自己打開它並指定一個可以處理該字符的編碼。

logfile = open('C:/Users/Administrator/Desktop/logs/log.log', 'a', encoding='utf-8') 
logging.basicConfig(stream=logfile, 
    level=logging.INFO, 
    format='%(asctime)s - %(message)s') 
+0

這一個給我另一個錯誤 - ValueError:關閉文件的I/O操作。 – Anonymous

+0

它在一個類的btw中調用,這可能是問題嗎? – Anonymous

+0

@Anonymous一旦'with'塊退出,文件關閉。在塊中完成所有日誌記錄,或者使用簡單的'logfile = open(...)'並在完成時使用'logfile.close()'。 –