【发布时间】:2019-04-27 17:50:38
【问题描述】:
我正在尝试创建一个自定义记录器,如下面的代码所示。但是,无论我将什么级别传递给函数,记录器都只会打印警告消息。例如,即使我默认设置参数 level = logging.DEBUG 我的代码也无法记录调试或信息消息。有人可以在这里指出问题。
import boto3
import logging
def get_logger(name=__name__, level=logging.DEBUG):
# Create log handler
logHandler = logging.StreamHandler()
logHandler.setLevel(level)
# Set handler format
logFormat = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s", datefmt="%d-%b-%y")
logHandler.setFormatter(logFormat)
# Create logger
logger = logging.getLogger(name)
# Add handler to logger
logger.addHandler(logHandler)
# Stop propagating the log messages to root logger
# logger.propagate = False
return logger
def listBuckets():
logThis = get_logger(level=logging.DEBUG)
s3 = boto3.resource('s3')
for bucket in s3.buckets.all():
logThis.debug(msg='This message is from logger')
print(bucket.name)
listBuckets()
【问题讨论】:
-
首先,您没有使用由 get_logger 函数返回的
logThis变量进行日志记录,其次不要使用类型作为变量的名称,因为type是 Python 中的关键字。 -
默认根级别记录器设置为
WARNING级别。 -
我认为,如果我正在创建自定义记录器,那么我应该能够看到来自该记录器的消息。不管根记录器有什么设置。我是对的还是遗漏了什么?
-
您已经编辑了您的问题,您仍然无法获得所需的输出吗?在您之前的代码中,您确实创建了自定义记录器,但您没有使用它。相反,您使用的是根记录器中的默认记录器设置。
-
@AnkitJaiswal:感谢您指出错别字。我编辑了帖子以匹配我的代码,但是问题出在其他地方,而不是因为拼写错误。
标签: python python-3.x amazon-web-services logging amazon-s3