You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

logging包Debug方法失效:Kivy表单数据无法写入myapp.log

解决Kivy中execute函数无法写入日志文件的问题

看起来你的问题出在logging.basicConfig的调用时机上,让我给你拆解一下:

问题根源

logging.basicConfig() 这个函数只有在第一次被调用时才会生效,后续的调用都会被直接忽略。你的代码里每次触发execute函数都会调用它,这就导致只有第一次执行时日志配置会被初始化,但如果后续重复触发(比如多次点击按钮),日志配置不会被重新加载;甚至如果程序在调用execute前已经有其他地方初始化了日志系统,basicConfig也完全不会生效,日志可能只会输出到默认控制台而非文件。

修复方案

把日志的配置代码移到函数外部,在程序启动时就完成初始化,而不是每次执行execute都重复调用。修改后的代码如下:

import logging
import selenium
from kivy.app import App
from kivy.uix.gridlayout import GridLayout

# 提前配置日志,只在程序启动时执行一次
logging.basicConfig(
    filename="myapp.log",
    level=logging.DEBUG,
    format='%(asctime)s:%(message)s'
)

class UIf(GridLayout):
    def execute(self, *args):
        print("First probe")
        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()

额外排查点

如果修改后还是无法写入日志,可以检查这几点:

  • 确认程序运行的当前目录是否有权限创建和写入文件(比如某些系统下的受限目录需要特殊权限)
  • 查看myapp.log是否生成在程序的当前工作目录下,而不是你预期的路径(可以用import os; print(os.getcwd())打印当前目录确认)
  • 再次确认args确实包含有效数据(你已经用print("Third probe")验证过这一点,所以这个可能性较低)

内容的提问来源于stack exchange,提问作者Aakash Hirve

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:11:52