Carsten Ziegeler wrote:

Daniel Fagerstrom schrieb:
The ECM is given a LoggerManager that uses OSGi's LogService. We may consider using an optional LoggerManager service if present, as LogService has some limitations (no categories, and no isXxxEnabled methods).
The OSGi LogService is obviously a little bit limited. In the long term we should have a LogService implementation in the Oscar project that extends the OSGi LogService with the needed methods. Until then we could either use the Knopflerfish extension of the LogService that at least contains isXxxEnabled methods. Or, if someone feel like doing it, implement an own LogService that fullfills our requirements, that we can donate to the Oscar project later.

I think we should simply not use the OSGi LogService - we have the
avalon logging infrastructure we can simply continue to use. We
shouldn't change most of our core from one logging system to another.
I'm not talking about changing anything within core. The idea is to use a LoggerManager implementation that in turn uses an OSGi LogService, see o.a.c.core.osgi.OSGiLoggerManager. By using the OSGi LogServce at that level we automatically logs that are marked with what bundle it origins from and also a standardized API for accessing the log info. This log info can in turn be used from e.g. an OSGi console bundle (graphic or command line).

Besides the Avalon context we have the Context in the environment, the o.a.c.core.Core, o.a.c.core.Settings, o.a.c.environment.internal.EnvironmentHelper that gives access to info that at least to me seem to cover overlapping concerns. I wonder if anyone in the community have a complete understanding of the intended roles and lifecycles of all this.

I'm trying to move away from the Avalon context. The context will be
replaced by the Core object and the settings object. While the settings
object contains all "settings" :) (like configuration location, logging
settings etc.), the core object is the Cocoon "core" :) The core
provides access to various information as an official api. So basically
everything which is not a setting.
I appriciate that you work on tidying things up, still non circular definitions of the concern areas would help ;)

The EnvironmentHelper is an *internal* object which is just there to
make the tree processor implementation a little bit easier/faster. It
should not be used directly!
I know that it is internal, it is still important when you work on the internals, so its role in relation to other context info needs to be clarified. Also the combination of dependecy injections in terms of context and core and static information in terms of the EnvironmentHelper, makes things harder to follow. Also the static EnvironmentHelper makes it much more complicated to write unit testing code for core components. So I'm starting to think that it is a design mistake to have it.

/Daniel

Reply via email to