python 日誌

1.日誌重複打印

import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch = logging.handlers.RotatingFileHandler('date_extract.log.', maxBytes=50 * 1024 * 1024, backupCount=10,encoding="utf-8")
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')

輸出結果:
在這裏插入圖片描述
日誌有重複打印的問題,這個問題在spyder中才會出現,在linux環境下和VScode中都不會出現。

解決方案:加上如下代碼,並重啓spyder

logger.removeHandler(ch)

完整代碼:

import logging
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch = logging.handlers.RotatingFileHandler('date_extract.log.', maxBytes=50 * 1024 * 1024, backupCount=10,encoding="utf-8")
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)
logger.debug('debug message')
logger.info('info message')
logger.warning('warn message')
logger.error('error message')
logger.critical('critical message')
logger.removeHandler(ch)

輸出結果:
在這裏插入圖片描述
2.多文件共用一個日誌
文件1:logging_main.py

import logging
import logging.handlers
logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch = logging.handlers.RotatingFileHandler('date_extract.log.', maxBytes=50 * 1024 * 1024, backupCount=10,encoding="utf-8")
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
logger.addHandler(ch)

文件2:logging_sub1.py

from logging_main import logger
logger.info("************logging_sub1****************")
logger.error("@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@")

文件3:logging_sub2.py

from logging_main import logger
logger.info("************logging_sub2****************")
logger.error("######################################")

輸出結果:

2019-06-26 10:43:42,299 - simple_example - INFO - ************logging_sub1****************
2019-06-26 10:43:42,299 - simple_example - ERROR - @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
2019-06-26 10:43:57,063 - simple_example - INFO - ************logging_sub2****************
2019-06-26 10:43:57,063 - simple_example - ERROR - ######################################

前兩行爲運行logging_sub1.py的結果,後兩行爲運行logging_sub2.py,這樣就可以實現多文件共用一個日誌啦。
實踐中可以將logging_main.py中的內容放在配置文件中。

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