一、問題:
使用python的logging模塊記錄日志,有時會遇到中文編碼問題錯誤。
二、解決辦法:
在logging.FileHandler(path) 中添加指定編碼方式 encoding='utf-8' 即可,logging.FileHandler(path, encoding='utf-8') 。
示例日志模塊代碼:
import logging,sys filelog = True path = r'log.txt' logger = logging.getLogger('log') logger.setLevel(logging.DEBUG) # 調用模塊時,如果錯誤引用,比如多次調用,每次會添加Handler,造成重復日志,這邊每次都移除掉所有的handler,后面在重新添加,可以解決這類問題 while logger.hasHandlers(): for i in logger.handlers: logger.removeHandler(i) # file log formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s') if filelog: fh = logging.FileHandler(path,encoding='utf-8') fh.setLevel(logging.DEBUG) fh.setFormatter(formatter) logger.addHandler(fh) # console log formatter = logging.Formatter('%(message)s') ch = logging.StreamHandler(sys.stdout) ch.setLevel(logging.DEBUG) ch.setFormatter(formatter) logger.addHandler(ch) if __name__ == '__main__': logger.info("這是一個測試")