Index: src/java/org/apache/log4j/Category.java =================================================================== --- src/java/org/apache/log4j/Category.java (revision 349818) +++ src/java/org/apache/log4j/Category.java (working copy) @@ -1210,6 +1210,8 @@ aai.removeAppender(appender); } lock.releaseWriteLock(); + + repository.fireRemoveAppenderEvent((Logger) this, appender); } /** @@ -1221,14 +1223,19 @@ * @since 0.8.2 */ public void removeAppender(String name) { + Appender appender = null; + lock.getWriteLock(); - if ((name == null) || (aai == null)) { // nothing to do } else { - aai.removeAppender(name); + appender = aai.getAppender( name ); + aai.removeAppender( appender ); } lock.releaseWriteLock(); + + if ( appender != null ) + repository.fireRemoveAppenderEvent((Logger) this, appender); } /** @@ -1265,7 +1272,17 @@ *

*/ public void setLevel(Level level) { + if ( level != null ) + { + if ( level == this.level ) + return; // same level objects + if ( level.equals( this.level ) ) + return; // log level is not really changing + } + else if ( this.level == null ) + return; // both levels are null this.level = level; + repository.fireLevelChangedEvent( (Logger) this ); } // /**