2010-04-08 104 views
0

我在我的项目中使用了一个开源的Python库。该库使用日志记录类记录大量信息。 ...但我看不到输出或将其记录到文件。我知道我将不得不创建一个记录器实例,并添加一个文件处理程序或控制台处理程序,但我怎样才能将这个记录器实例传递给该类?这里是我将要使用的类的init片段。将记录器实例传递给类

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 

任何帮助吗?

谢谢你们。

回答

1

最简单的方法是在logging模块中使用basicConfig函数。下面是在说什么docs

通过创建一个带有默认格式化一个StreamHandler中并将其添加到根记录器做为日志系统的基本配置。如果已经为根记录器定义了任何处理程序,则该函数不执行任何操作。如果没有为根记录器定义处理程序,函数debug(),info(),warning(),error()和critical()将自动调用basicConfig()。

如果根记录器已经配置了处理程序,则此函数不执行任何操作。

logging模块设计的方式,配置从创建日志消息分开,所以没有必要有机会获得记录器实例。

0

尝试将级别设置为尽可能最低(DEBUG)。这将启用所有日志级别,并应为您提供所有日志消息。做默认配置最简单的方法是使用basicConfig()

import logging  
logging.basicConfig(level=logging.DEBUG, filename='/path/to/mylog.log') 

如果您使用的是不覆盖日志记录配置库,这应该是足以让邮件到日志文件。如果您知道库正在使用的记录器的名称,则可以专门设置库的级别:

logging.getLogger("periscope").setLevel(logging.DEBUG)