我是python的新手。我正在python中编写一个守护进程,在我的守护进程中我有一个记录器类。记录器类是我需要在我的守护进程中使用的东西。现在,而不是在我的每个类中创建类的新实例或传递logger类的对象,我想实现类似静态类的PHP,以便它将内部的数据库连接缓存,我可以从任何地方调用它而无需实例化,喜欢,
Logger::log('This is cool');
我怎么能在python中做到这一点?
答案 0 :(得分:1)
你可以尝试logging模块。 logging.getLogger确保
对具有给定名称的此函数的所有调用都返回相同的记录器实例。这意味着记录器实例永远不需要在应用程序的不同部分之间传递。
例如,在任何地方,当您致电logging.getLogger('the-logger-name')
时,您始终会获得相同的对象。
由于您希望将日志写入数据库,因此需要实现自己的handler连接到数据库,并通过logger.addHanlder与记录器连接。
当您通过派生logging.Handler
来实施处理程序时,您不必覆盖所有方法 - 结帐BufferingHandler在handlers implementation Here中的作用。< / p>