[Zope3-Users] Re: Configuring a package to use a file in buildout

Jürgen Kartnaller juergen at kartnaller.at
Fri Nov 23 05:00:19 EST 2007


In your buildout you do :

[instance]
recipe = zc.zope3recipes:instance
application = app
address = 8080
zope.conf =

   <product-config my-config-name>
     storagedir ${buildout:directory}/parts/log
   </product-config>


If you need the log dir precreated you do :

[extfiledir]
recipe = lovely.recipe:mkdir
path = parts/log


To access the product config from python :

from zope.app.appsetup.product import getProductConfiguration

config = getProductConfiguration('my-config-name')
if config is not None:
     path = config.get('logpath')


Use your utility name as "my-config-name".


Jürgen

Darryl Cousins wrote:
> Hi,
> 
> I have a custom logger in a package registered with utility
> 
> <zope:utility  factory=".logger.MyLogger" name="logger" />
> 
> In the code it sets itself a logfile to write to, up to now that has
> been in a 'log' directory in the package itself.
> 
> Now I want to use a log file which is in the buildout of the
> application. How could I go about finding that directory from python
> code in the package?
> 
> The only route that I have come up with so far is to write a
> meta:directive which I can use to register the logging utility with a
> file path. Something like:
> 
>   <meta:directive
>       namespace="http://namespaces.zope.org/rdb"
>       name="provideLogger"
>       schema=".zcml.IProvideLoggerDirective"
>       handler=".zcml.loggerhandler"
>       />
> 
> Which I could use like
> 
>   <provideLogger component=".logger.MyLogger"
>                  log="/path/to/log/file" />
> 
> But there may be a better/easier way. Suggestions?
> 
> Regards,
> Darryl



More information about the Zope3-users mailing list