2016-02-19 58 views

回答

3

在過去,我有一個類似的用例。 我解決它通過聲明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代碼:

2

您可以讓擴建中的環境變量設置在parts/instance/etc/zope.conf

import os 
buildout_directory = os.environ.get('BUILDOUT_DIRECTORY', '') 

默認情況下,你已經有了INSTANCE_HOME環境變量,這可能足夠。

+0

謝謝,我發現這也有用,但對於我的具體用例,我認爲@alepisa解決方案更可取。 – hvelarde