I was thinking that org.apache.logging would be the base package for new stuff. org.apache.logging.log4j would be the home for a (at least mostly) source code compatible API. Other stuff that works with both the log4j API and the java.util.logging API might be in org.apache.logging.appender or org.apache.logging.layout or something similar. I think other package name issues will get clearer once we get into separating API from implementation bundles with OSGi which is a long way away.


I'm going to need to do some reading on OSGI, but one thing I think we should consider is that logging packages generally don't have any dependencies, so I'm hoping that at least the 'core' log4j2 is quite standalone. I think requiring log4j2 at it's core to rely on an external package _might_ reduce uptake? I'll need to understand OSGI more. I hear Apache Felix is moving out of the incubator shortly. Has anyone played with that yet?


Design principles could pretty much be summed up to read and follow "Effective Java" (Second Edition coming soon) and "Java Concurrency in Practice". Cover everything with unit tests, ideally test first design. Code defensively, don't code that depends other code not doing something unexpected. Design for concurrency.


What about Inversion of Control principles? I'm not suggesting the use of Spring etc obviously, but the general IoC principles make things really easy to mock out and test.


I'm very keen to encourage other developers to want to participate and having this openly visible gives everyone a similar reference point to aim at. We obviously need not be hasty in granting committer privs, but I would dearly love to build up the dev community to ensure it's health.


I'm definitely all about community discussion and participation. Things do need to be jump-started a bit so we have a basis for discussion and experimentation. I have had a lot of things that I could say but didn't think it was beneficial to spew them out when their wasn't any code shortly forthcoming. Without code we can have a lot of meaningless arguments without any basis for experimentation and conclusions.


I'm all in favour in seeing code snippets up front etc, but I'm hoping we don't simply 'dive in' and start building without having a clear goal that everyone is on board with. Obviously articulating ideas will require some isolated code examples etc.


The thing that can't (in my opinion) be accomplished without a pretty thorough redesign is fine-grain concurrency. Currently log4j is effectively bottlenecked at one logging event in the dispatch pipeline at a time which can be a performance bottleneck on multi-processor systems. There are obvious places that would be unsafe if that bottleneck was removed (like reused StringBuffers) and a huge number of potential concurrency issues.


Yes, concurrency is one very weak point of log4j12 and is already on my list. Relying on JDK 1.5 and it's concurrency package is going to make life a lot easier (all hail Doug Lea and team).

I'd also like to see the "back-end" components like appenders and layouts work effectively with multiple front-end APIs, particularly java.util.logging.


I'm not sure I quite get that one.  Any chance you could expand on that?

Paul

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to