Pretty much all the interfaces in log4j-core except for:
* jmx
* web
* maybe some subpackages in appender (e.g., rewrite, rolling)

I'm proposing we put all these public API classes into either o.a.l.l.core
or making a new package for it such as o.a.l.l.core.api. This can aid in
making it obvious where all the interfaces that should be extended for
custom plugins are. It can also be useful in exposing less classes to OSGi
(reducing the number of exported packages necessary).

Here's a list of the qualifying interfaces I'm talking about:

* ManagerFactory
* Configuration
* ConfigurationListener
* ConfigurationMonitory
* Reconfigurable
* Filterable
* StrLookup
* Advertiser
* LogEventInput
* AnsiConverter (would this be useful?)
* ArrayPatternConverter
* PatternConverter
* ContextSelector
* NamedContextSelector
* LogEventFactory
* ResourceLoader (new interface inside helpers.lang)
* Clock
* SecretKeyProvider

Related idea: would grouping together any abstract base implementation
classes like AbstractLayout, AbstractAppender, AbstractManager,
AbstractConfiguration, AbstractFilter, AbstractFilterable, etc., into some
higher level package be useful? Basically make the package structure easier
to understand as a plugin developer. The log4j-api package is very nicely
structured and is very easy to understand as a developer. We could do
something similar with log4j-core.

-- 
Matt Sicker <boa...@gmail.com>

Reply via email to