22
的默认处理程序我有下面的代码放在一个WSGI(的web2py)的每个请求运行的应用程序:更换的Python记录器
import logging, logging.handlers
from logging import StreamHandler, Formatter
def get_configured_logger(name):
logger = logging.getLogger(name)
if (len(logger.handlers) == 0):
# This logger has no handlers, so we can assume it hasn't yet been configured (Django uses similiar trick)
# === Configure logger ===
# Create Formatted StreamHandler:
FORMAT = "%(process)s %(thread)s: %(message)s"
formatter = logging.Formatter(fmt=FORMAT)
handler = logging.StreamHandler()
handler.setFormatter(formatter)
logger.addHandler(handler)
logger.setLevel(logging.DEBUG)
logger.debug('CONFIGURING LOGGER')
return logger
# Get app specific logger:
logger = get_configured_logger(request.application)
logger.debug("TEST")
它意味着一旦配置记录仪,用格式化处理我想要的。它的工作原理,但我得到我的标准输出双项:
81893 4329050112: CONFIGURING LOGGER
DEBUG:dummy:CONFIGURING LOGGER
81893 4329050112: TEST
DEBUG:dummy:TEST
如何使用我的新格式的处理程序,并摆脱/隐藏默认的一个吗?
我从来没有使用过这个类,但你不觉得logger.setLevel(logging.DEBUG)和logger.debug有点多余吗? – MiJyn 2012-08-05 21:50:53
lkjoel-不,他们是两回事。调用'.debug(..)'在调试级别创建日志条目,同时设置日志记录级别告诉处理程序处理*处理该级别的日志条目。 – Yarin 2012-08-05 21:57:32
你是否在任何地方调用'logging.basicConfig'?如果是这样,请发表评论。 – unutbu 2012-08-05 22:28:54