Jess Holle wrote:

          o I created an AppenderSkeleton alternative for our own
            usage similar to ConcurrentAppender but different in
            several respects.
                + ConcurrentAppender relies on all sorts of stuff from
                  outside the core log4j jar -- I didn't want to.
                + ConcurrentAppender introduces a notion of 'closed'
                  state and a read-write lock -- I wanted to leave
                  that to subclasses which need it and not burden
                  others with this.
                + ConcurrentAppender uses a guard to prevent
                  re-entrancy.  I examined some of my custom appenders
                  and found this totally unnecessary in some cases --
                  and thus didn't want this in the base class.
                + Etc...

I also noticed race issues in the concurrent PatternLayout -- specifically between activateOptions()'s handling of patternConverters and patternFields and format()'s usage thereof.

Such races are real issues for those of us who allow reconfiguration of layouts, etc, on-the-fly at any time (via JMX in my case -- my own MBeans as those in log4j had issues).

--
Jess Holle

Reply via email to