gpt4 book ai didi

python - 如何从实例内部获取 Zope 安装位置?

转载 作者:行者123 更新时间:2023-11-28 21:48:20 27 4
gpt4 key购买 nike

我们正在研究 add-on that writes to a log file我们需要找出默认的 var/log 目录所在的位置(${buildout:directory} 变量的值)。

有没有简单的方法可以做到这一点?

最佳答案

过去我有一个类似的用例。我通过在 zope.conf 中声明路径来解决它:

zope-conf-additional +=
<product-config pd.prenotazioni>
logfile ${buildout:directory}/var/log/prenotazioni.log
</product-config>

查看本产品的 README:

然后可以用这段代码解释这个 zope 配置:

from App.config import getConfiguration

product_config = getattr(getConfiguration(), 'product_config', {})
config = product_config.get('pd.prenotazioni', {})
logfile = config.get('logfile')

查看完整示例

值得注意的是,如果多次错误调用 init 函数,初始返回可避免多次记录。

无论如何,如果您不想使用构建和自定义 zope 配置,您可能想要获取默认事件日志位置

它在 zope.conf 中指定。你应该有这样的东西:

<eventlog>
level INFO
<logfile>
path /path/to/plone/var/log/instance.log
level INFO
</logfile>
</eventlog>

我能够通过这段代码获取路径:

from App.config import getConfiguration 
import os

eventlog = getConfiguration().eventlog
logpath = eventlog.handler_factories[0].instance.baseFilename
logfolder = os.path.split(logpath)[0]

可能在 App 模块代码中查看您会发现获取此值的更直接的方法。

另一种可能的(恕我直言,较弱的)解决方案是将日志文件路径存储(通过构建或您喜欢的方法)到环境变量中。

关于python - 如何从实例内部获取 Zope 安装位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35510590/

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