gpt4 book ai didi

python - 我应该在哪里执行logging.basicConfig()?

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

我正在使用一个可以加载 python 解释器并运行任何 python 脚本的应用程序。我正在这个应用程序中创建进程,运行脚本来控制外部硬件。硬件正在特定地址和端口上通过 TCP/IP 监听文本形式的命令,并通过同一端口发送响应。

我有 SocketInterface.py,它处理字节编码/解码并处理所有套接字内容,以便其他模块可以调用 SocketInterface.send(), .receive () 等。其中一个模块是一个类似命令行的 gui 东西,它只是在循环中运行 send()receive() ,读取来自文本框的命令并在另一个文本框中显示响应。

我正在开发的另一个模块将涉及一些包装函数,这些函数会自动以正确的格式构造命令,发送它,并等待从硬件接收适当的响应。我想将日志记录纳入其中。我发送的命令和收到的响应的 INFO 级别语句,某些 TCP/IP 内容的 DEBUG 级别语句等。

最终,我希望我会有多个“脚本”,每个工作流程一个,但我希望所有这些脚本都写入同一个日志,比如在一天的时间内。

来 self 的命令包装器模块:

    def __init__(self):
self.si = SocketInterface()
self.logger = logging.getLogger(__name__)

try:
os.mkdir('logs')
except FileExistsError:
pass

logging.basicConfig(
filename='logs/{}.log'.format(time.strftime('%Y-%m-%d')),
filemode='a', level=logging.DEBUG,
format='%(asctime)s::%(name)s::%(levelname)s::%(message)s'
)

按照 basicConfig() 的工作方式,这段代码可以执行任意多次(尽管我可能希望避免 os.mkdir() 尝试运行很多次.我只是真的不知道将该代码放在哪里以确保它实际上确实执行,而无需将其粘贴到各处。

是否有比将其放在我编写的每个脚本中的 main() 开头更简洁的解决方案?

最佳答案

您可以将其放在 __main__ 文件中的导入之后。一旦解释器点击它,它就会执行。然后,您可以在每个文件的开头获取记录器。如果您将文件作为模块导入,它将在导入时运行,如果您直接运行它,它仍然会首先运行。这是因为解释器运行每个文件寻找指令并按顺序执行它们。因此它将导入、运行配置、获取记录器,然后运行你的 main。

关于python - 我应该在哪里执行logging.basicConfig()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59061116/

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