import sys
import logging
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 - %(pathname)s[line:%(lineno)d] - %(levelname)s: %(message)s') # 日誌的格式
fh = logging.FileHandler(r'test_logger.log', encoding='utf-8') # 日誌文件路徑文件名稱,編碼格式
fh.setLevel(logging.DEBUG) # 日誌打印級別
fh.setFormatter(formatter)
logger.addHandler(fh)
# console log 控制檯輸出控制
ch = logging.StreamHandler(sys.stdout)
ch.setLevel(logging.DEBUG)
ch.setFormatter(formatter)
logger.addHandler(ch)
def work():
logger.info('中文不亂碼')
logger.error('打印錯誤日誌')
if __name__ == "__main__":
work()