2016-02-19 1 views

Répondre

3

Dans le passé, j'avais un cas d'utilisation similaire. Je l'ai résolu en déclarant le chemin à l'intérieur du zope.conf:

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

Voir le README de ce produit:

Cette configuration Zope peut alors être interprétée avec cette code:

from App.config import getConfiguration 

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

Voir l'exemple complet

A noter le fait que le rendement initial évite l'enregistrement multiple si la fonction init est appelée à tort plus d'une fois.

Quoi qu'il en soit, si vous ne voulez pas jouer avec le buildout et la configuration zope personnalisée, vous pouvez obtenir l'emplacement du journal des événements par défaut.

Il est spécifié dans le fichier zope.conf. Vous devriez avoir quelque chose comme ceci:

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

j'ai pu obtenir le chemin avec ce code:

from App.config import getConfiguration 
import os 

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

probablement à la recherche dans le code du module App, vous trouverez un moyen plus simple d'obtenir cette valeur.

Une autre solution possible (IMHO plus faible) serait de stocker (via buildout ou votre méthode préférée) le chemin du fichier journal dans une variable d'environnement.

2

Vous pouvez buildout le mettre en parts/instance/etc/zope.conf dans une variable d'environnement:

[instance] 
recipe = plone.recipe.zope2instance 
environment-vars = 
    BUILDOUT_DIRECTORY ${buildout:directory} 

Vérifiez dans le code Python avec:

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

Par défaut, vous avez déjà la variable d'environnement INSTANCE_HOME, qui pourrait être assez.

+0

merci, j'ai trouvé cela utile aussi, mais pour mon cas d'utilisation spécifique, je pense que la solution @alepisa est plus souhaitable. – hvelarde