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()
您忽略了这样一个事实:a)每个记录器的最终祖先都是根记录器(默认情况下它具有级别警告
);b)记录器和处理程序都具有级别。
文档声明:
当创建记录器时,级别设置为NOTSET(当记录器是根记录器时,这将导致处理所有消息;当记录器是非根记录器时,将委托给父记录器)。
如果到达了根,并且它具有NOTSET级别,那么所有消息都将被处理。否则,根的级别将用作有效级别。
这意味着,您将立即在根记录器中确定有效的日志级别;根据根记录器的默认值,它被设置为warning
。您可以使用父级
和级
属性以及Logger
对象上的GetEffectiveLevel
方法检查这一点:
logThis = get_logger()
print(logThis.parent) # <RootLogger root (WARNING)>
print(logThis.level) # 0 (= NOTSET)
print(logThis.getEffectiveLevel()) # 30 (= WARNING) from root logger
要让记录器处理所需级别上的消息,只需通过get_logger
函数中的logger.setlevel(level)
在记录器上设置它。
目前在spring Boot1.3中,我们只能将访问日志记录到文件系统中的一个文件。有没有办法实际使用自定义记录器(像log4j2)来记录访问日志? 我目前正在使用undertow和spring boot,但是在检查spring boot源代码之后,undertow记录器是用DefaultAccessLogReceiver初始化的,它正在写入文件。如果可能的话,我希望使用AccessLogHand
我正在尝试用标准的Python日志记录到文件来替换一种旧的记录信息的方法。该应用程序目前有一个日志文件,它被设置为捕获信息和调试消息,所以我希望它在一个较低的级别,而不是由主日志捕获。 应用程序结构: 在和中是对旧的函数的调用,我不希望将该函数记录在中,但也不希望它们出现在文件中。 理想的工作方式是创建一个带有调试函数的包装器,该函数在新的级别上进行日志记录,我已经了解到这需要的扩展。 因此,在中
问题内容: 如何使用Python中的日志记录模块写入文件?每当我尝试使用它时,它只会打印出消息。 问题答案: 一个使用而不是一个例子 按顺序,这五个部分执行以下操作: 设置输出文件() 将其设置为追加而不是覆盖() 确定输出消息的格式() 确定输出时间的格式() 并确定它将接受的最低消息级别()。
问题内容: 我想为我的应用程序使用loglevel TRACE(5),因为我认为这还不够。另外不是我想要的。如何将自定义日志级别添加到Python记录器? 我有以下内容: 在我的代码中,我通过以下方式使用它: 现在我想打电话 在此先感谢您的帮助。 编辑 (2016年12月8日):我[pfa的)可接受答案更改为IMHO,这是基于Eric S的非常好的建议的出色解决方案。 问题答案: @Eric S.
将PostSharp用于C#应用程序,我有以下场景: Namespace_ACustomLoggingMethod Namespace_B.DoThings thingMethod(实际上是几种不同的方法) DoMomthingMethod调用CustomLoggingMethod,它以所需的格式创建日志条目并且运行良好。正如预期的那样,日志条目将源记录为CustomLoggingMethod,我
我有一个小的python项目,它有如下结构-- 我计划使用默认日志模块将消息打印到stdout和一个日志文件。要使用日志模块,需要进行一些初始化- 目前,我在开始记录消息之前在每个模块中执行此初始化。是否有可能在一个地方只执行一次初始化,以便通过在整个项目中进行日志记录来重用相同的设置?