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

_______________________________________________
Zope3-users mailing list
Zope3-users@zope.org
http://mail.zope.org/mailman/listinfo/zope3-users

Reply via email to