在我的代码中,不知何故,记录器输出两次事件,但传统的print
显示了正确的事件数。在
select 1,2
select 1,2
2013-04-19 18:37:30,618:4561354752 - SQLLogger - DEBUG - select 1,2
2013-04-19 18:37:30,618:4561354752 - SQLLogger - DEBUG - select 1,2
2013-04-19 18:37:30,618:4565561344 - SQLLogger - DEBUG - select 1,2
2013-04-19 18:37:30,618:4565561344 - SQLLogger - DEBUG - select 1,2
我不清楚为什么同一条消息在多线程情况下会多次发布。在
^{pr2}$
您已经启动了两个线程,每个线程都有自己的SQLEngine属性对象,在各自的线程运行时执行该对象。如果您想在多个线程之间共享记录器,那么最好创建一个可以传递的logger对象。吉尔会处理剩下的。在
这只是一个例子。正如@tomasz所提到的,您可以根据您的需求来处理这个logger对象
查看logger文档:
现在,您的构造函数正在调用以下代码:
注意,您不会为每个
SQLEngine
对象创建一个新的记录器,但总是获得对同一个记录器实例的引用。这意味着您总是将处理程序添加到同一个记录器中,因此在创建第二个对象之后,您的记录器有两个处理程序,每个处理程序都打印到屏幕上。在我们只需要注册一个处理程序(例如在
SQLEngine
构造函数之外),或者为每个SQLEngine
实例使用不同的名称调用getLogger
。在相关问题 更多 >
编程相关推荐