gpt4 book ai didi

Python 日志记录 API 打印文件名为 ``

转载 作者:太空宇宙 更新时间:2023-11-03 14:53:22 24 4
gpt4 key购买 nike

我有一个由我的应用程序执行的 python 脚本。该脚本使用内置 logging来自Python的API。我遇到的问题是所有日志消息中的文件名都写为 <string> 。当我在代码片段中运行相同的代码时,它运行良好。下面是我用来配置记录器的代码:

import logging
import os
import sys
from logging import FileHandler, StreamHandler

logger = logging.getLogger('update_menu')
logger.setLevel(logging.DEBUG)

# create handlers and set level to debug
fileHandler = FileHandler(filename='/home/fguimaraes/work/update_menu.log')
fileHandler.setLevel(logging.DEBUG)

consoleHandler = StreamHandler(stream=sys.stdout)
consoleHandler.setLevel(logging.DEBUG)

# create formatter
formatter = logging.Formatter('%(asctime)s [%(levelname)s] %(message)s;File:%(filename)s;Function:%(funcName)s;Line:%(lineno)d')

# add formatter to log
fileHandler.setFormatter(formatter)
consoleHandler.setFormatter(formatter)

# add log to logger
logger.addHandler(fileHandler)
logger.addHandler(consoleHandler)

最佳答案

这可能是因为您的脚本正在被读入内存并使用例如以下命令作为字符串执行: exec,这意味着该脚本没有文件名。示例:

$ cat /tmp/test.py
import logging

logging.basicConfig(level=logging.DEBUG, format='%(filename)s: %(message)s')
logging.debug('This is a test')
vinay@theta-trusty-unity:~/projects/orbitilweb$ python /tmp/test.py
test.py: This is a test
$ python
Python 2.7.6 (default, Oct 26 2016, 20:30:19)
[GCC 4.8.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> with open('/tmp/test.py') as f: data = f.read()
...
>>> exec data
<string>: This is a test
>>>

关于Python 日志记录 API 打印文件名为 `<string>`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45764577/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com