python打印日誌到控制檯並將日誌寫入文件

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()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章