On Dec 23, 2005, at 3:37 PM, Jacob Kjome wrote:
A bit of a sidetrack from the current discussion, but just how big
is log4j-1.3 going to be and just how polluted with 1.2.xx stuff
are we going to make it? Originally, a lot of stuff was refactored
and/or removed and replaced by, arguably, better implementations.
Last changes I made, I had Log4j-1.3 and Log4j-1.2.xx working with
LogWeb. I figured that if something that uses Log4j internals like
LogWeb works with both, then 1.3 was good to go.
My impression was that even the simplest app that used log4j 1.2
would fail with class verifier exceptions on JDK 1.5 with the current
log4j 1.3. I'm sure that the major culprit for that was the Priority/
Level inversion and if that was fixed, then only a much smaller sets
of potential applications would fail.
Now we've got everything from Log4j-1.2.xx coming back into
Log4j-1.3, plus all the changes and additions made for 1.3 in there
as well. From my perspective, maybe the current 1.3 should have
just moved to 2.0 and 1.3 should have been developed off the 1.2
branch. 1.3 seems to be turning into a monster with everything
1.2.xx being added back in to make it binary compatible. Log4j is
already somewhat bloated as it is. Any larger and its going to burst.
thoughts?
The biggest thing that would go back in to restore binary
compatibility in my estimation would be the
org.apache.log4j.DailyRollingFileAppender and
org.apache.log4j.RollingFileAppender. Currently, there are shims
that redirect to o.a.l.rolling.RollingFileAppender that should be
sufficient if you only used those classes but would not be compatible
if you had extended them. There had been nothing in the 1.2 code
base that marked those classes as either deprecated or final or
warned against extension, so not bringing them back would be likely
to break some legitimate users of log4j 1.2.
There are a couple of options:
a) Totally drop the o.a.l.RFA and DRFA classes
This was tried but there were repeated complaints about configuration
files that no longer worked with 1.3 that give rise to the shims.
b) Leave the shims in and document that applications that use
extensions of those classes will break.
c) Replace the shims with the current 1.2 implementations, but mark
as deprecated and
1) leave in log4j.jar
2) place in log4j-deprecated.jar (or similar)
A log4j-deprecated.jar has some appeal since it could be the home of
a lot of dropped (without warning) classes like o.a.l.HTMLLayout and
the o.a.l.varia Filters.
Actually, a bigger thing to go back for strict compatibility would be
LogFactor5 which is still part of the log4j-1.2.x.jar's. However, I
think it would be likely that we could get away with saying that any
app that used LF5 will break with log4j 1.3.
p.s.: As for wanting binary compatibility or a lean and mean log4j.
I actually want both, a compatible 1.3 and a lean and mean 2.0. I
want the mean and lean 2.0 more, but think the best path first makes
the current code base 1.2 compatible and then consider intentional
and radical changes to the implementation but under a different
package name.
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]