将记录器实例传递给类
我在我的项目中使用一个开源的Python库。这个库使用日志类记录了很多信息。
...但是我看不到输出,也无法将其记录到文件中。我知道我需要创建一个日志记录器实例,并为它添加一个文件处理器或控制台处理器,但我该如何将这个日志记录器实例传递给这个类呢?这是我将要使用的类的初始化代码片段。
class Periscope:
''' Main Periscope class'''
def __init__(self):
self.config = ConfigParser.SafeConfigParser({"lang": "en"})
if is_local:
self.config_file = os.path.join(bd.xdg_config_home, "periscope", "config")
if not os.path.exists(self.config_file):
folder = os.path.dirname(self.config_file)
if not os.path.exists(folder):
logging.info("Creating folder %s" %folder)
os.mkdir(folder)
logging.info("Creating config file")
configfile = open(self.config_file, "w")
self.config.write(configfile)
configfile.close()
else:
#Load it
self.config.read(self.config_file)
self.pluginNames = self.listExistingPlugins()
self._preferedLanguages = None
有人能帮忙吗?
谢谢大家。
2 个回答
0
试着把日志级别设置到最低(DEBUG)。这样可以开启所有的日志级别,应该能让你看到所有的日志信息。最简单的默认配置方法是使用 basicConfig()
import logging
logging.basicConfig(level=logging.DEBUG, filename='/path/to/mylog.log')
如果你使用的库没有覆盖日志配置,这样就足够让信息写入日志文件了。如果你知道库使用的日志记录器的名字,你可以专门为这个库设置日志级别:
logging.getLogger("periscope").setLevel(logging.DEBUG)
1
最简单的方法就是使用 logging
模块里的 basicConfig
函数。以下是官方文档的说明:
这个函数会为日志系统做基本配置,它会创建一个默认的流处理器(StreamHandler)和格式化器(Formatter),然后把它添加到根日志记录器(root logger)上。如果根日志记录器已经定义了其他处理器,这个函数就不会做任何事情。如果根日志记录器没有定义处理器,函数中的
debug()
、info()
、warning()
、error()
和critical()
方法会自动调用basicConfig()
。如果根日志记录器已经配置了处理器,这个函数就不会做任何事情。
logging
模块的设计是将配置和创建日志信息分开,所以你不需要直接访问日志记录器的实例。