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中的内容放在配置文件中。

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