TypeError:尝试使用已创建的记录器对象时,无法调用“记录器”对象

时间:2018-10-11 18:36:31

标签: python logging

我有一些用例,其中类是继承的。在基类中,我创建了记录器对象

Private Sub Command240_Click()
    If IsNull(Me.Text224) Then
        MsgBox "Before I can Command240, you must enter a Text224.", vbExclamation
    ElseIf Not IsDate(Me.Text224) Then
        MsgBox "The Text224 you entered is invalid.", vbExclamation
    Else
        MsgBox "You have entered a valid Text224, but for some reason I can't Command240."
    End If
End Sub

在派生类中,我尝试使用同一对象

import logging

class abc():
   logging.basicConfig(filename=r"D:\logger.txt",format="%(asctime)s %(message)s",filemode="w")
   abcd=logging.getLogger()
   abcd.setLevel(logging.INFO)

但是我得到了:

from test import abc
import logging
class pqr(abc):
  p=logging.getLogger('abcd')
  p.setLevel(logging.INFO)

  def you(self):
    self.p("Ad")

 obj=pqr()
 obj.you()

1 个答案:

答案 0 :(得分:0)

我不确定您要使用此代码完成什么。您提供了三部分,但其中包括一些断开连接的组件。让我们来回顾一下:

class abc():
   logging.basicConfig(filename=r"D:\logger.txt",
                       format="%(asctime)s %(message)s",
                       filemode="w")
   abcd=logging.getLogger()
   abcd.setLevel(logging.INFO)

您已经建立了一个类abc,初始化了logging 1的配置,并创建了一个类属性abcd ...,您在以后的代码中不会使用它,所以我不确定为什么它会出现在您的帖子中。

class pqr(abc):
  p=logging.getLogger('abcd')
  p.setLevel(logging.INFO)

您从上一课派生一个pqr课。然后,实例化一个标记为“ abcd”的新记录器,使其成为类属性,并设置其报告级别。 *请注意,这是一个新的记录器,而不是您在abc中创建的记录器。

到目前为止,我们还好。但是...

# In pqr:
    def you(self):
        self.p("Ad")

# Main
obj=pqr()
obj.you()

obj.p(方法self.p中的you)是pqr类记录器。您试图将整个记录器对象调用。它不是方法或函数。它是整个记录器对象。如果您希望记录某些内容,则必须调用适当的方法,例如self.p.info(<your message>)