我们正在研究add-on that writes to a log file,我们需要找出默认的var/log
目录所在的位置(${buildout:directory}
变量的值)。如何从实例中获取Zope安装的位置?
有没有简单的方法来完成这个?
我们正在研究add-on that writes to a log file,我们需要找出默认的var/log
目录所在的位置(${buildout:directory}
变量的值)。如何从实例中获取Zope安装的位置?
有没有简单的方法来完成这个?
在过去,我有一个类似的用例。 我解决它通过声明zope.conf内的路径:
zope-conf-additional +=
<product-config pd.prenotazioni>
logfile ${buildout:directory}/var/log/prenotazioni.log
</product-config>
查看该产品的自述:
这Zope的配置可以接着用这个来解释代码:
from App.config import getConfiguration
product_config = getattr(getConfiguration(), 'product_config', {})
config = product_config.get('pd.prenotazioni', {})
logfile = config.get('logfile')
查看完整的例子
值得注意的是,在初始收益避免了多个记录,如果初始化函数被误称为不止一次的事实。
无论如何,如果你不想玩buildout和自定义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模块的代码,你会发现得到这个更简单的方法值。
另一种可能的(恕我直言,较弱)解决方案将存储(通过buildout或您的首选方法)日志文件路径到环境变量。
[instance]
recipe = plone.recipe.zope2instance
environment-vars =
BUILDOUT_DIRECTORY ${buildout:directory}
以检查它在Python代码:
您可以让扩建中的环境变量设置在parts/instance/etc/zope.conf
import os
buildout_directory = os.environ.get('BUILDOUT_DIRECTORY', '')
默认情况下,你已经有了INSTANCE_HOME
环境变量,这可能足够。
谢谢,我发现这也有用,但对于我的具体用例,我认为@alepisa解决方案更可取。 – hvelarde