python - 使用 python 日志模块在 VS Code 中没有输出

标签 python visual-studio-code logging python-logging

我在 Windows 10 上使用 VS Code 1.73.1,并使用 Python logging 模块改造我的程序。我的程序总体运行正常。我做的主要事情是将所有打印语句更改为 logger.debug 并且我知道变量格式需要从 {} 更改为 %s.我还将 encoding 标志添加到我的文件处理程序中。

还有一些事情:

  1. 当我从 VS Code 命令行运行它时,它会创建一个包含调试语句的文件,但不会在终端、调试控制台或输出窗口中显示任何输出。
  2. 当我使用 F5 函数运行它时,它不会创建文件或在任何地方显示任何控制台输出。

print('something') 根据 launch.json 设置在终端或调试控制台中工作和显示,但 logger.debug(' some') 不会在任一控制台中显示。

我的请求/问题:使用logger.debug,为什么没有任何内容打印到控制台,甚至没有创建文件?

我还尝试在自己单独的 .py 文件中运行下面的代码,但遇到同样的问题:
print 显示到调试控制台,但 logger.debug 不显示。

记录代码块:

import logging

# Create a custom logger
logger = logging.getLogger(__name__)
logger.setLevel(logging.DEBUG)
# Streaming Handler
c_handler = logging.StreamHandler()
c_handler.setLevel(logging.INFO)
c_format = logging.Formatter('%(name)s - %(levelname)s - %(message)s')
c_handler.setFormatter(c_format)
logger.addHandler(c_handler)
# File Handler
f_handler = logging.FileHandler('download_shelf.log', encoding='utf-8')
f_handler.setLevel(logging.DEBUG)
f_format = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
f_handler.setFormatter(f_format)
logger.addHandler(f_handler)

logger.debug(f"Log messages:") ### `print` statement displays in either the Terminal 
                               ### or Debug Console depending on `launch.json` setting

我确保我的 launch.json 文件已设置在本地 .vscode 文件夹中(请参阅底部代码部分)。但是,我确实必须手动创建此文件,然后重新启动 VS Code。我发现的信息说调试面板中有一个链接,我知道我以前见过。该文件不存在。

我的目录结构:

toplevel/
    .vscode/
        launch.json
    src/
        subdirectory/
           myfile.py

我的 launch.json 文件包含 "console": "internalConsole"

{
    "configurations": [
        {"name":"Python: Current File",
        "type":"python",
        "request":"launch",
        "program":"${file}",
        // "console":"integratedTerminal",
        "console": "internalConsole",
        "justMyCode":true
        },
    ]
}

最佳答案

使用不同的记录器示例后,我意识到问题是我使用的第一个示例中的级别设置有“INFO”而不是“DEBUG”,因此没有显示任何内容。哎呀...

import logging

logger = logging.getLogger('simple_example')
logger.setLevel(logging.DEBUG)
console = logging.StreamHandler()
console.setLevel(level=logging.DEBUG)
formatter =  logging.Formatter('%(levelname)s : %(message)s')
console.setFormatter(formatter)
logger.addHandler(console)

logger.debug('simple message')

关于python - 使用 python 日志模块在 VS Code 中没有输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74585126/

相关文章:

java - 将日志文件流式传输到远程客户端

python - 如何在 python 中包含引号?

javascript - 为什么我的 ajax 调用不起作用?

user-interface - 如何从集成 VSCode 的终端隐藏主文件夹名称?

即使设置了级别,Python 日志记录模块也不记录信息

logging - 我可以将日志写入/添加到位于hdfs中的压缩文件中吗?

python - Django中临时修改模型的字段值

python - 如何等待用户在使用 python 的 Selenium 网络驱动程序中单击按钮?

java - 如何在 vs 代码中调试 Java maven spring-boot 应用程序?

python - Python in/Library/Frameworks/Python.framework/Versions/3.7/bin/python3 和 in/usr/local/bin/python3 有什么区别