【问题标题】:Debug method of logging package isn't working日志包的调试方法不起作用
【发布时间】:2018-08-25 01:58:39
【问题描述】:

我已从表单中获取输入并将它们从 kivy 文件(on_press 属性)传递给此函数。表单数据在执行函数中正确获取,但不会记录在 myapp.log 中 代码如下:

import logging
import selenium

class UIf(GridLayout):
    def execute(self, *args):
        print("First probe")
        logging.basicConfig(filename="myapp.log", level = logging.DEBUG, format='%(asctime)s:%(message)s')
        print("Second probe")
        for name in args:
            print("Third probe")
            logging.debug(name)

class MyApp(App):
    def build(self):
        return UIf()

if __name__ == '__main__':
    runapp = MyApp()
    runapp.run()

【问题讨论】:

  • 日志代码本身可以正常工作。如果 args 参数正确填充了字符串数据,那么我不确定问题出在哪里。还有什么我们应该知道的吗?
  • 你确定execute执行了什么方法?我看不到您如何在示例代码中执行方法。
  • @gordlonious 是的,我已经打印出(在控制台中)我在按下“提交”后从 kivy 文件传递​​的所有参数。在执行函数中,所有参数都作为字符串正确接收。
  • @Zheka Koval 是的,该死的,执行函数正在被执行。我用 kivy 创建了一个简单的表单,从 4 个字段中获取用户文本,然后在用户点击提交按钮后,使用 on_press 属性执行函数被执行,甚至在执行函数中接收到字符串我在控制台中打印出来。唯一的问题是字符串不会被记录到指定的文件中。

标签: python python-3.x debugging logging kivy


【解决方案1】:

请务必在导入任何 kivy 代码之前调用 basicConfig,因为它自己执行,可能与您的参数(尤其是输出文件)冲突。

此外,您可能需要在 kivy 配置中将调试级别设置为 DEBUG,或者在 kivy 导入之后重置自己的日志级别,因为它会将其重置为其值。

我同意这有点侵入性,我们可能应该认为这是一个错误,但我不知道最好的方法是既拥有良好的默认设置又不妨碍有意见的人。

【讨论】:

  • 首先感谢您的回答!我确实尝试了您的解决方案,但仍然无法正常工作。在运行我的应用程序之前,我转移了日志记录 basicConfig。 if name == 'main': logging.basicConfig(filename="myapp.log", level=logging.DEBUG, format='%(asctime)s:% (message)s') runapp = MyApp() runapp.run()
  • 好的,现在我实际上将 basicConfig 放在了日志记录的导入语句和之后的所有其他导入语句之后,但它完全记录了其他内容,而不是我尝试使用日志记录的字符串.debug 方法。我真的被这个困住了..
  • 我编辑添加了关于日志级别的部分,这可能是您当前的问题。
猜你喜欢
  • 2013-01-05
  • 1970-01-01
  • 2021-10-17
  • 2015-02-15
  • 2021-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多