【发布时间】:2017-02-10 19:42:52
【问题描述】:
我在一个名为“logger.py”的文件中有以下代码
import logging
format = '%(asctime)s - %(name)-30s - %(levelname)-8s - %(message)s'
logging.basicConfig(level=logging.DEBUG,
format=format)
formatter = logging.Formatter(format)
fh = logging.FileHandler('test.log')
fh.setFormatter(formatter)
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setFormatter(formatter)
ch.setLevel(logging.INFO)
logging.getLogger().addHandler(fh)
logging.getLogger().addHandler(ch)
在另一个文件中
import logging
import logger
logger = logging.getLogger(__name__)
logger.info('Staring Scheduler')
我得到以下控制台输出
2014-07-14 22:27:10,915 - __main__ - INFO - Staring Scheduler
2014-07-14 22:27:10,915 - __main__ - INFO - Staring Scheduler
我无法禁用双输出。我想使用额外的流处理程序来自定义打印到控制台的日志级别。将来我还想使用 RotatingFileHandler 而不是简单的文件处理程序。
有人知道如何在保持简单记录器设置与第二个文件一样的同时实现此目的吗?我有搜索,但似乎没有解决方案。
更新 1(已解决)
文件logger.py
import logging
logging.getLogger().setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)-30s - %(levelname)-8s - %(message)s')
fh = logging.FileHandler('test.log')
fh.setFormatter(formatter)
fh.setLevel(logging.DEBUG)
ch = logging.StreamHandler()
ch.setFormatter(formatter)
ch.setLevel(logging.ERROR)
logging.getLogger().addHandler(fh)
logging.getLogger().addHandler(ch)
文件test.py
import logging
import logger
logger = logging.getLogger(__name__)
logger.debug('Debug message')
logger.info('Info message')
logger.warning('Warning message')
logger.error('Error message')
logger.critical('Critical message')
控制台输出:
2014-07-15 09:47:58,171 - __main__ - ERROR - Error message
2014-07-15 09:47:58,171 - __main__ - CRITICAL - Critical message
Test.log内容:
2014-07-15 09:47:58,171 - __main__ - DEBUG - Debug message
2014-07-15 09:47:58,171 - __main__ - INFO - Info message
2014-07-15 09:47:58,171 - __main__ - WARNING - Warning message
2014-07-15 09:47:58,171 - __main__ - ERROR - Error message
2014-07-15 09:47:58,171 - __main__ - CRITICAL - Critical message
【问题讨论】: