Buggy code:
public class PropertyConfigurator extends BasicConfigurator implements Configurator { protected Hashtable registry = new Hashtable ( 11 ) ; protected LoggerFactory categoryFactory = new DefaultCategoryFactory ( ) ; static final String CATEGORY_PREFIX = "log4j.category." ; static final String FACTORY_PREFIX = "log4j.factory" ; static final String ADDITIVITY_PREFIX = "log4j.additivity." ; static final String ROOT_CATEGORY_PREFIX = "log4j.rootCategory" ; static final String APPENDER_PREFIX = "log4j.appender." ; static final String RENDERER_PREFIX = "log4j.renderer." ; public static final String CATEGORY_FACTORY_KEY = "log4j.categoryFactory" ; private static final String INTERNAL_ROOT_NAME = "root" ; public void doConfigure ( String configFileName , Hierarchy hierarchy ) { } public static void configure ( String configFilename ) { } public static void configure ( URL configURL ) { } public static void configure ( Properties properties ) { } public static void configureAndWatch ( String configFilename ) { } public static void configureAndWatch ( String configFilename , long delay ) { } public void doConfigure ( Properties properties , Hierarchy hierarchy ) { } public void doConfigure ( URL configURL , Hierarchy hierarchy ) { } protected void configureCategoryFactory ( Properties props ) { } void configureRootCategory ( Properties props , Hierarchy hierarchy ) { } protected void parseCatsAndRenderers ( Properties props , Hierarchy hierarchy ) { } void parseAdditivityForCategory ( Properties props , Logger cat , String categoryName ) { } void parseCategory ( Properties props , Logger logger , String optionKey , String loggerName , String value ) { LogLog . debug ( ( ( ( ( "Parsing<seq2seq4repair_space>for<seq2seq4repair_space>[" + loggerName ) + "]<seq2seq4repair_space>with<seq2seq4repair_space>value=[" ) + value ) + "]." ) ) ; StringTokenizer st = new StringTokenizer ( value , "," ) ; if ( ! ( ( value . startsWith ( "," ) ) || ( value . equals ( "" ) ) ) ) { if ( ! ( st . hasMoreTokens ( ) ) ) return ; String priorityStr = st . nextToken ( ) ; LogLog . debug ( ( ( "Priority<seq2seq4repair_space>token<seq2seq4repair_space>is<seq2seq4repair_space>[" + priorityStr ) + "]." ) ) ; if ( ( priorityStr . equalsIgnoreCase ( INHERITED ) ) && ( ! ( loggerName . equals ( PropertyConfigurator . INTERNAL_ROOT_NAME ) ) ) ) { <START_BUG> logger . setPriority ( null ) ; <END_BUG> } else { logger . setLevel ( OptionConverter . toLevel ( priorityStr , Priority . DEBUG ) ) ; } LogLog . debug ( ( ( ( "Category<seq2seq4repair_space>" + loggerName ) + "<seq2seq4repair_space>set<seq2seq4repair_space>to<seq2seq4repair_space>" ) + ( logger . getPriority ( ) ) ) ) ; } logger . removeAllAppenders ( ) ; Appender appender ; String appenderName ; while ( st . hasMoreTokens ( ) ) { appenderName = st . nextToken ( ) . trim ( ) ; if ( ( appenderName == null ) || ( appenderName . equals ( "," ) ) ) continue ; LogLog . debug ( ( ( "Parsing<seq2seq4repair_space>appender<seq2seq4repair_space>named<seq2seq4repair_space>\"" + appenderName ) + "\"." ) ) ; appender = parseAppender ( props , appenderName ) ; if ( appender != null ) { logger . addAppender ( appender ) ; } } } Appender parseAppender ( Properties props , String appenderName ) { } void registryPut ( Appender appender ) { } Appender registryGet ( String name ) { } }

Fix:
logger . setLevel ( null ) ;