我們正在研究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