In Five/fiveconfigure.py with Zope 2.9.8, when there is a zcml error in a Product that Five tries to initialise, this error is raised:
2008-01-11T18:56:23 ERROR Zope Couldn't install Five
Traceback (most recent call last):
File "/home/dixond/zope/app/zope-2.9.8/lib/python/OFS/Application.py", line 783, in install_product
initmethod(context)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/Products/Five/__init__.py", line 29, in initialize
zcml.load_site()
File "/home/dixond/zope/app/zope-2.9.8/lib/python/Products/Five/zcml.py", line 41, in load_site
_context = xmlconfig.file(file)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/xmlconfig.py", line 558, in file
include(context, name, package)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/xmlconfig.py", line 494, in include
processxmlfile(f, context)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/xmlconfig.py", line 349, in processxmlfile
parser.parse(src)
File "/home/dixond/zope/app/python-2.4.4/lib/python2.4/xml/sax/expatreader.py", line 107, in parse
xmlreader.IncrementalParser.parse(self, source)
File "/home/dixond/zope/app/python-2.4.4/lib/python2.4/xml/sax/xmlreader.py", line 123, in parse
self.feed(buffer)
File "/home/dixond/zope/app/python-2.4.4/lib/python2.4/xml/sax/expatreader.py", line 207, in feed
self._parser.Parse(data, isFinal)
File "/home/dixond/zope/app/python-2.4.4/lib/python2.4/xml/sax/expatreader.py", line 348, in end_element_ns
self._cont_handler.endElementNS(pair, None)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/xmlconfig.py", line 328, in endElementNS
self.context.end()
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/config.py", line 544, in end
self.stack.pop().finish()
File "/home/dixond/zope/app/zope-2.9.8/lib/python/zope/configuration/config.py", line 692, in finish
actions = self.handler(context, **args)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/Products/Five/fiveconfigure.py", line 88, in loadProducts
handleBrokenProduct(product)
File "/home/dixond/zope/app/zope-2.9.8/lib/python/Products/Five/fiveconfigure.py", line 66, in handleBrokenProduct
logger.error('Could not import Product %s' % product.__name__, error=True)
File "/home/dixond/zope/app/python-2.4.4/lib/python2.4/logging/__init__.py", line 999, in error
apply(self._log, (ERROR, msg, args), kwargs)
ZopeXMLConfigurationError: File "/home/dixond/zope/app/zope-2.9.8/lib/python/Products/Five/skel/site.zcml", line 13.2-13.23
TypeError: _log() got an unexpected keyword argument 'error'
This is because the original zLOG logger was changed for the python logger library, and the zLOG keyword argument 'error=True' was left behind in the handleBrokenProduct() function. This has been corrected in HEAD, but in persists in the latest 2.9.x Zope releases.
Further, once this is fixed, Five still fails to initialise (presumably because of the invalid zcml directive in the Product it is trying to initialise):
2008-01-11T20:16:20 ERROR Five Could not import Product Products.MyContent <---- This line now logs correctly with the error above manually fixed dixond/ zope/app/ zope-2. 9.8/lib/ python/ OFS/Application .py", line 783, in install_product context) dixond/ zope/app/ zope-2. 9.8/lib/ python/ Products/ Five/__ init__. py", line 29, in initialize load_site( ) dixond/ zope/app/ zope-2. 9.8/lib/ python/ Products/ Five/zcml. py", line 41, in load_site file(file) dixond/ zope/app/ zope-2. 9.8/lib/ python/ zope/configurat ion/xmlconfig. py", line 558, in file context, name, package) dixond/ zope/app/ zope-2. 9.8/lib/ python/ zope/configurat ion/xmlconfig. py", line 496, in include stack[- 1].context is context
------
2008-01-11T20:16:20 ERROR Zope Couldn't install Five
Traceback (most recent call last):
File "/home/
initmethod(
File "/home/
zcml.
File "/home/
_context = xmlconfig.
File "/home/
include(
File "/home/
assert _context.
AssertionError
When the configure.zcml in the 'MyContent' Product is corrected, the AssertionError above goes away and Five initialises properly.