Program: 29995
Project: 29995
Buggy source:
/** 
 * Initialize the loggers
 */
public void postConstruct(){
  if (System.getProperty("String_Node_Str") != null) {
    return;
  }
  final LogManager logMgr=LogManager.getLogManager();
  File logging=null;
  try {
    logging=getLoggingFile();
    System.setProperty("String_Node_Str",logging.getAbsolutePath());
    if (!logging.exists()) {
      Logger.getAnonymousLogger().log(Level.WARNING,logging.getAbsolutePath() + "String_Node_Str");
      String rootFolder=env.getProps().get(com.sun.enterprise.util.SystemPropertyConstants.INSTALL_ROOT_PROPERTY);
      String templateDir=rootFolder + File.separator + "String_Node_Str"+ File.separator+ "String_Node_Str";
      File src=new File(templateDir,ServerEnvironmentImpl.kLoggingPropertiesFileName);
      File dest=new File(env.getConfigDirPath(),ServerEnvironmentImpl.kLoggingPropertiesFileName);
      FileUtils.copy(src,dest);
      logging=new File(env.getConfigDirPath(),ServerEnvironmentImpl.kLoggingPropertiesFileName);
    }
    logMgr.readConfiguration();
  }
 catch (  IOException e) {
    logger.log(Level.SEVERE,"String_Node_Str",e);
  }
  FormatterDelegate agentDelegate=null;
  if (agent != null) {
    agentDelegate=new AgentFormatterDelegate(agent);
  }
  String formatterClassname=null;
  try {
    Map<String,String> props=getLoggingProperties();
    formatterClassname=props.get(CONSOLEHANDLER_FORMATTER_PROPERTY);
    consoleHandlerFormatterDetail=formatterClassname;
    Class formatterClass=LogManagerService.class.getClassLoader().loadClass(formatterClassname);
    if (formatterClass.getName().equals("String_Node_Str")) {
      UniformLogFormatter formatter=(UniformLogFormatter)formatterClass.newInstance();
      String cname="String_Node_Str";
      recordBeginMarker=props.get(cname + "String_Node_Str");
      if (recordBeginMarker == null || ("String_Node_Str").equals(recordBeginMarker)) {
        recordBeginMarker=RECORD_BEGIN_MARKER;
      }
      recordEndMarker=props.get(cname + "String_Node_Str");
      if (recordEndMarker == null || ("String_Node_Str").equals(recordEndMarker)) {
        recordEndMarker=RECORD_END_MARKER;
      }
      recordFieldSeparator=props.get(cname + "String_Node_Str");
      if (recordFieldSeparator == null || ("String_Node_Str").equals(recordFieldSeparator) || recordFieldSeparator.length() > 1) {
        recordFieldSeparator=RECORD_FIELD_SEPARATOR;
      }
      recordDateFormat=props.get(cname + "String_Node_Str");
      if (recordDateFormat != null && !("String_Node_Str").equals(recordDateFormat)) {
        SimpleDateFormat sdf=new SimpleDateFormat(recordDateFormat);
        try {
          sdf.format(new Date());
        }
 catch (        Exception e) {
          recordDateFormat=RECORD_DATE_FORMAT;
        }
      }
 else {
        recordDateFormat=RECORD_DATE_FORMAT;
      }
      formatter.setRecordBeginMarker(recordBeginMarker);
      formatter.setRecordEndMarker(recordEndMarker);
      formatter.setRecordDateFormat(recordDateFormat);
      formatter.setRecordFieldSeparator(recordFieldSeparator);
      for (      Handler handler : logMgr.getLogger("String_Node_Str").getHandlers()) {
        handler.setFormatter(formatter);
      }
    }
 else     if (formatterClass.getName().equals("String_Node_Str")) {
      ODLLogFormatter formatter=(ODLLogFormatter)formatterClass.newInstance();
      for (      Handler handler : logMgr.getLogger("String_Node_Str").getHandlers()) {
        handler.setFormatter(formatter);
      }
    }
    serverLogFileDetail=props.get(SERVER_LOG_FILE_PROPERTY);
    handlerDetail=props.get(HANDLER_PROPERTY);
    consoleHandlerFormatterDetail=props.get(CONSOLEHANDLER_FORMATTER_PROPERTY);
    gffileHandlerFormatterDetail=props.get(GFFILEHANDLER_FORMATTER_PROPERTY);
    rotationOnTimeLimitInMinutesDetail=props.get(ROTATIONTIMELIMITINMINUTES_PROPERTY);
    flushFrequencyDetail=props.get(FLUSHFREQUENCY_PROPERTY);
    filterHandlerDetails=props.get(FILEHANDLER_LIMIT_PROPERTY);
    logToConsoleDetail=props.get(LOGTOCONSOLE_PROPERTY);
    rotationInTimeLimitInBytesDetail=props.get(ROTATIONLIMITINBYTES_PROPERTY);
    useSystemLoggingDetail=props.get(USESYSTEMLOGGING_PROPERTY);
    fileHandlerCountDetail=props.get(FILEHANDLER_COUNT_PROPERTY);
    retainErrorsStaticticsDetail=props.get(RETAINERRORSSTATICTICS_PROPERTY);
    log4jVersionDetail=props.get(LOG4J_VERSION_PROPERTY);
    maxHistoryFilesDetail=props.get(MAXHISTORY_FILES_PROPERTY);
    rotationOnDateChangeDetail=props.get(ROTATIONONDATECHANGE_PROPERTY);
    fileHandlerPatternDetail=props.get(FILEHANDLER_PATTERN_PROPERTY);
    fileHandlerFormatterDetail=props.get(FILEHANDLER_FORMATTER_PROPERTY);
    logFormatDateFormatDetail=props.get(LOGFORMAT_DATEFORMAT_PROPERTY);
  }
 catch (  java.io.IOException ex) {
    logger.log(Level.SEVERE,"String_Node_Str",ex);
  }
catch (  ClassNotFoundException exc) {
    logger.log(Level.SEVERE,"String_Node_Str",formatterClassname);
  }
catch (  Exception e) {
    logger.log(Level.SEVERE,"String_Node_Str",e);
  }
  Collection<Handler> handlers=habitat.getAllByContract(Handler.class);
  if (handlers != null && handlers.size() > 0) {
synchronized (logMgr) {
      Enumeration<String> loggerNames=logMgr.getLoggerNames();
      while (loggerNames.hasMoreElements()) {
        String loggerName=loggerNames.nextElement();
        logMgr.getLogger(loggerName);
        for (        Handler handler : logger.getHandlers()) {
          if (handler.getFormatter() instanceof UniformLogFormatter) {
            ((UniformLogFormatter)handler.getFormatter()).setDelegate(agentDelegate);
          }
        }
      }
      for (      Handler handler : handlers) {
        addHandler(handler);
      }
    }
  }
  try {
    Map<String,String> map=getLoggingProperties();
    String filterClassName=map.get(LoggingXMLNames.xmltoPropsMap.get("String_Node_Str"));
    if (filterClassName != null) {
      Filter filterClass=habitat.getComponent(java.util.logging.Filter.class,filterClassName);
      Logger rootLogger=Logger.global.getParent();
      if (rootLogger != null) {
        rootLogger.setFilter(filterClass);
      }
    }
  }
 catch (  java.io.IOException ex) {
  }
  Logger _ologger=LogDomains.getLogger(LogManagerService.class,LogDomains.STD_LOGGER);
  LoggingOutputStream los=new LoggingOutputStream(_ologger,Level.INFO);
  LoggingOutputStream.LoggingPrintStream pout=los.new LoggingPrintStream(los);
  System.setOut(pout);
  Logger _elogger=LogDomains.getLogger(LogManagerService.class,LogDomains.STD_LOGGER);
  los=new LoggingOutputStream(_elogger,Level.SEVERE);
  LoggingOutputStream.LoggingPrintStream perr=los.new LoggingPrintStream(los);
  System.setErr(perr);
  if (logging != null) {
    fileMonitoring.monitors(logging,new FileMonitoring.FileChangeListener(){
      public void changed(      File changedFile){
synchronized (gfHandlers) {
          try {
            Map<String,String> props=getLoggingProperties();
            if (props == null)             return;
            Set<String> keys=props.keySet();
            for (            String a : keys) {
              if (a.endsWith("String_Node_Str")) {
                String n=a.substring(0,a.lastIndexOf("String_Node_Str"));
                Level l=Level.parse(props.get(a));
                if (logMgr.getLogger(n) != null) {
                  logMgr.getLogger(n).setLevel(l);
                }
 else                 if (gfHandlers.containsKey(n)) {
                  Handler h=(Handler)gfHandlers.get(n);
                  h.setLevel(l);
                }
 else                 if (n.equals("String_Node_Str")) {
                  Logger logger=Logger.global.getParent();
                  Handler[] h=logger.getHandlers();
                  for (int i=0; i < h.length; i++) {
                    String name=h[i].toString();
                    if (name.contains("String_Node_Str"))                     h[i].setLevel(l);
                  }
                }
              }
 else               if (a.equals(SERVER_LOG_FILE_PROPERTY)) {
                if (!props.get(a).equals(serverLogFileDetail)) {
                  PropertyChangeEvent pce=new PropertyChangeEvent(this,a,serverLogFileDetail,props.get(a));
                  UnprocessedChangeEvents ucel=new UnprocessedChangeEvents(new UnprocessedChangeEvent(pce,"String_Node_Str"));
                  List<UnprocessedChangeEvents> b=new ArrayList();
                  b.add(ucel);
                  ucl.unprocessedTransactedEvents(b);
                }
              }
 else               if (a.equals(HANDLER_PROPERTY)) {
                if (!props.get(a).equals(handlerDetail)) {
                  generateAttributeChangeEvent(HANDLER_PROPERTY,handlerDetail,props);
                }
              }
 else               if (a.equals(CONSOLEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(consoleHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(CONSOLEHANDLER_FORMATTER_PROPERTY,consoleHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(GFFILEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(gffileHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(GFFILEHANDLER_FORMATTER_PROPERTY,gffileHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(ROTATIONTIMELIMITINMINUTES_PROPERTY)) {
                if (!props.get(a).equals(rotationOnTimeLimitInMinutesDetail)) {
                  generateAttributeChangeEvent(ROTATIONTIMELIMITINMINUTES_PROPERTY,rotationOnTimeLimitInMinutesDetail,props);
                }
              }
 else               if (a.equals(FLUSHFREQUENCY_PROPERTY)) {
                if (!props.get(a).equals(flushFrequencyDetail)) {
                  generateAttributeChangeEvent(FLUSHFREQUENCY_PROPERTY,flushFrequencyDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_LIMIT_PROPERTY)) {
                if (!props.get(a).equals(filterHandlerDetails)) {
                  generateAttributeChangeEvent(FILEHANDLER_LIMIT_PROPERTY,filterHandlerDetails,props);
                }
              }
 else               if (a.equals(LOGTOCONSOLE_PROPERTY)) {
                if (!props.get(a).equals(logToConsoleDetail)) {
                  generateAttributeChangeEvent(LOGTOCONSOLE_PROPERTY,logToConsoleDetail,props);
                }
              }
 else               if (a.equals(ROTATIONLIMITINBYTES_PROPERTY)) {
                if (!props.get(a).equals(rotationInTimeLimitInBytesDetail)) {
                  generateAttributeChangeEvent(ROTATIONLIMITINBYTES_PROPERTY,rotationInTimeLimitInBytesDetail,props);
                }
              }
 else               if (a.equals(USESYSTEMLOGGING_PROPERTY)) {
                if (!props.get(a).equals(useSystemLoggingDetail)) {
                  generateAttributeChangeEvent(USESYSTEMLOGGING_PROPERTY,useSystemLoggingDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_COUNT_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerCountDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_COUNT_PROPERTY,fileHandlerCountDetail,props);
                }
              }
 else               if (a.equals(RETAINERRORSSTATICTICS_PROPERTY)) {
                if (!props.get(a).equals(retainErrorsStaticticsDetail)) {
                  generateAttributeChangeEvent(RETAINERRORSSTATICTICS_PROPERTY,retainErrorsStaticticsDetail,props);
                }
              }
 else               if (a.equals(LOG4J_VERSION_PROPERTY)) {
                if (!props.get(a).equals(log4jVersionDetail)) {
                  generateAttributeChangeEvent(LOG4J_VERSION_PROPERTY,log4jVersionDetail,props);
                }
              }
 else               if (a.equals(MAXHISTORY_FILES_PROPERTY)) {
                if (!props.get(a).equals(maxHistoryFilesDetail)) {
                  generateAttributeChangeEvent(MAXHISTORY_FILES_PROPERTY,maxHistoryFilesDetail,props);
                }
              }
 else               if (a.equals(ROTATIONONDATECHANGE_PROPERTY)) {
                if (!props.get(a).equals(rotationOnDateChangeDetail)) {
                  generateAttributeChangeEvent(ROTATIONONDATECHANGE_PROPERTY,rotationOnDateChangeDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_PATTERN_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerPatternDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_PATTERN_PROPERTY,fileHandlerPatternDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_FORMATTER_PROPERTY,fileHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(LOGFORMAT_DATEFORMAT_PROPERTY)) {
                if (!props.get(a).equals(logFormatDateFormatDetail)) {
                  generateAttributeChangeEvent(LOGFORMAT_DATEFORMAT_PROPERTY,logFormatDateFormatDetail,props);
                }
              }
            }
            logger.log(Level.INFO,"String_Node_Str");
          }
 catch (          Exception e) {
            logger.log(Level.SEVERE,"String_Node_Str",e);
          }
        }
      }
      public void deleted(      File deletedFile){
        logger.log(Level.INFO,"String_Node_Str");
      }
    }
);
  }
  List<EarlyLogger.LevelAndMessage> catchUp=EarlyLogger.getEarlyMessages();
  if (!catchUp.isEmpty()) {
    for (    EarlyLogger.LevelAndMessage levelAndMessage : catchUp) {
      logger.log(levelAndMessage.level,levelAndMessage.msg);
    }
    catchUp.clear();
  }
  ArrayBlockingQueue<LogRecord> catchEarlyMessage=EarlyLogHandler.earlyMessages;
  while (!catchEarlyMessage.isEmpty()) {
    LogRecord logRecord=catchEarlyMessage.poll();
    if (logRecord != null) {
      logger.log(logRecord);
    }
  }
}

Fixed version (ground truth):
/** 
 * Initialize the loggers
 */
public void postConstruct(){
  if (System.getProperty("String_Node_Str") != null) {
    return;
  }
  final LogManager logMgr=LogManager.getLogManager();
  File logging=null;
  try {
    logging=getLoggingFile();
    System.setProperty("String_Node_Str",logging.getAbsolutePath());
    if (!logging.exists()) {
      Logger.getAnonymousLogger().log(Level.WARNING,logging.getAbsolutePath() + "String_Node_Str");
      String rootFolder=env.getProps().get(com.sun.enterprise.util.SystemPropertyConstants.INSTALL_ROOT_PROPERTY);
      String templateDir=rootFolder + File.separator + "String_Node_Str"+ File.separator+ "String_Node_Str";
      File src=new File(templateDir,ServerEnvironmentImpl.kLoggingPropertiesFileName);
      File dest=new File(env.getConfigDirPath(),ServerEnvironmentImpl.kLoggingPropertiesFileName);
      FileUtils.copy(src,dest);
      logging=new File(env.getConfigDirPath(),ServerEnvironmentImpl.kLoggingPropertiesFileName);
    }
    logMgr.readConfiguration();
  }
 catch (  IOException e) {
    logger.log(Level.SEVERE,"String_Node_Str",e);
  }
  FormatterDelegate agentDelegate=null;
  if (agent != null) {
    agentDelegate=new AgentFormatterDelegate(agent);
  }
  String formatterClassname=null;
  try {
    Map<String,String> props=getLoggingProperties();
    formatterClassname=props.get(CONSOLEHANDLER_FORMATTER_PROPERTY);
    consoleHandlerFormatterDetail=formatterClassname;
    Class formatterClass=LogManagerService.class.getClassLoader().loadClass(formatterClassname);
    if (formatterClass.getName().equals("String_Node_Str")) {
      UniformLogFormatter formatter=(UniformLogFormatter)formatterClass.newInstance();
      String cname="String_Node_Str";
      recordBeginMarker=props.get(cname + "String_Node_Str");
      if (recordBeginMarker == null || ("String_Node_Str").equals(recordBeginMarker)) {
        recordBeginMarker=RECORD_BEGIN_MARKER;
      }
      recordEndMarker=props.get(cname + "String_Node_Str");
      if (recordEndMarker == null || ("String_Node_Str").equals(recordEndMarker)) {
        recordEndMarker=RECORD_END_MARKER;
      }
      recordFieldSeparator=props.get(cname + "String_Node_Str");
      if (recordFieldSeparator == null || ("String_Node_Str").equals(recordFieldSeparator) || recordFieldSeparator.length() > 1) {
        recordFieldSeparator=RECORD_FIELD_SEPARATOR;
      }
      recordDateFormat=props.get(cname + "String_Node_Str");
      if (recordDateFormat != null && !("String_Node_Str").equals(recordDateFormat)) {
        SimpleDateFormat sdf=new SimpleDateFormat(recordDateFormat);
        try {
          sdf.format(new Date());
        }
 catch (        Exception e) {
          recordDateFormat=RECORD_DATE_FORMAT;
        }
      }
 else {
        recordDateFormat=RECORD_DATE_FORMAT;
      }
      formatter.setRecordBeginMarker(recordBeginMarker);
      formatter.setRecordEndMarker(recordEndMarker);
      formatter.setRecordDateFormat(recordDateFormat);
      formatter.setRecordFieldSeparator(recordFieldSeparator);
      for (      Handler handler : logMgr.getLogger("String_Node_Str").getHandlers()) {
        handler.setFormatter(formatter);
      }
    }
 else     if (formatterClass.getName().equals("String_Node_Str")) {
      ODLLogFormatter formatter=(ODLLogFormatter)formatterClass.newInstance();
      for (      Handler handler : logMgr.getLogger("String_Node_Str").getHandlers()) {
        handler.setFormatter(formatter);
      }
    }
    serverLogFileDetail=props.get(SERVER_LOG_FILE_PROPERTY);
    handlerDetail=props.get(HANDLER_PROPERTY);
    consoleHandlerFormatterDetail=props.get(CONSOLEHANDLER_FORMATTER_PROPERTY);
    gffileHandlerFormatterDetail=props.get(GFFILEHANDLER_FORMATTER_PROPERTY);
    rotationOnTimeLimitInMinutesDetail=props.get(ROTATIONTIMELIMITINMINUTES_PROPERTY);
    flushFrequencyDetail=props.get(FLUSHFREQUENCY_PROPERTY);
    filterHandlerDetails=props.get(FILEHANDLER_LIMIT_PROPERTY);
    logToConsoleDetail=props.get(LOGTOCONSOLE_PROPERTY);
    rotationInTimeLimitInBytesDetail=props.get(ROTATIONLIMITINBYTES_PROPERTY);
    useSystemLoggingDetail=props.get(USESYSTEMLOGGING_PROPERTY);
    fileHandlerCountDetail=props.get(FILEHANDLER_COUNT_PROPERTY);
    retainErrorsStaticticsDetail=props.get(RETAINERRORSSTATICTICS_PROPERTY);
    log4jVersionDetail=props.get(LOG4J_VERSION_PROPERTY);
    maxHistoryFilesDetail=props.get(MAXHISTORY_FILES_PROPERTY);
    rotationOnDateChangeDetail=props.get(ROTATIONONDATECHANGE_PROPERTY);
    fileHandlerPatternDetail=props.get(FILEHANDLER_PATTERN_PROPERTY);
    fileHandlerFormatterDetail=props.get(FILEHANDLER_FORMATTER_PROPERTY);
    logFormatDateFormatDetail=props.get(LOGFORMAT_DATEFORMAT_PROPERTY);
  }
 catch (  java.io.IOException ex) {
    logger.log(Level.SEVERE,"String_Node_Str",ex);
  }
catch (  ClassNotFoundException exc) {
    logger.log(Level.SEVERE,"String_Node_Str",formatterClassname);
  }
catch (  Exception e) {
    logger.log(Level.SEVERE,"String_Node_Str",e);
  }
  Collection<Handler> handlers=habitat.getAllByContract(Handler.class);
  if (handlers != null && handlers.size() > 0) {
synchronized (logMgr) {
      Enumeration<String> loggerNames=logMgr.getLoggerNames();
      while (loggerNames.hasMoreElements()) {
        String loggerName=loggerNames.nextElement();
        logMgr.getLogger(loggerName);
        for (        Handler handler : logger.getHandlers()) {
          if (handler.getFormatter() instanceof UniformLogFormatter) {
            ((UniformLogFormatter)handler.getFormatter()).setDelegate(agentDelegate);
          }
        }
      }
      for (      Handler handler : handlers) {
        addHandler(handler);
      }
    }
  }
  try {
    Map<String,String> map=getLoggingProperties();
    String filterClassName=map.get(LoggingXMLNames.xmltoPropsMap.get("String_Node_Str"));
    if (filterClassName != null) {
      Filter filterClass=habitat.getComponent(java.util.logging.Filter.class,filterClassName);
      Logger rootLogger=Logger.global.getParent();
      if (rootLogger != null) {
        rootLogger.setFilter(filterClass);
      }
    }
  }
 catch (  java.io.IOException ex) {
  }
  Logger _ologger=LogDomains.getLogger(LogManagerService.class,LogDomains.STD_LOGGER);
  LoggingOutputStream los=new LoggingOutputStream(_ologger,Level.INFO);
  LoggingOutputStream.LoggingPrintStream pout=los.new LoggingPrintStream(los);
  System.setOut(pout);
  Logger _elogger=LogDomains.getLogger(LogManagerService.class,LogDomains.STD_LOGGER);
  los=new LoggingOutputStream(_elogger,Level.SEVERE);
  LoggingOutputStream.LoggingPrintStream perr=los.new LoggingPrintStream(los);
  System.setErr(perr);
  if (logging != null) {
    fileMonitoring.monitors(logging,new FileMonitoring.FileChangeListener(){
      public void changed(      File changedFile){
synchronized (gfHandlers) {
          try {
            Map<String,String> props=getLoggingProperties();
            loggerReference=new Vector<Logger>();
            if (props == null)             return;
            Set<String> keys=props.keySet();
            for (            String a : keys) {
              if (a.endsWith("String_Node_Str")) {
                String n=a.substring(0,a.lastIndexOf("String_Node_Str"));
                Level l=Level.parse(props.get(a));
                Logger appLogger=logMgr.getLogger(n);
                if (appLogger != null) {
                  appLogger.setLevel(l);
                  loggerReference.add(appLogger);
                }
 else                 if (gfHandlers.containsKey(n)) {
                  Handler h=(Handler)gfHandlers.get(n);
                  h.setLevel(l);
                }
 else                 if (n.equals("String_Node_Str")) {
                  Logger logger=Logger.global.getParent();
                  Handler[] h=logger.getHandlers();
                  for (int i=0; i < h.length; i++) {
                    String name=h[i].toString();
                    if (name.contains("String_Node_Str"))                     h[i].setLevel(l);
                  }
                }
              }
 else               if (a.equals(SERVER_LOG_FILE_PROPERTY)) {
                if (!props.get(a).equals(serverLogFileDetail)) {
                  PropertyChangeEvent pce=new PropertyChangeEvent(this,a,serverLogFileDetail,props.get(a));
                  UnprocessedChangeEvents ucel=new UnprocessedChangeEvents(new UnprocessedChangeEvent(pce,"String_Node_Str"));
                  List<UnprocessedChangeEvents> b=new ArrayList();
                  b.add(ucel);
                  ucl.unprocessedTransactedEvents(b);
                }
              }
 else               if (a.equals(HANDLER_PROPERTY)) {
                if (!props.get(a).equals(handlerDetail)) {
                  generateAttributeChangeEvent(HANDLER_PROPERTY,handlerDetail,props);
                }
              }
 else               if (a.equals(CONSOLEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(consoleHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(CONSOLEHANDLER_FORMATTER_PROPERTY,consoleHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(GFFILEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(gffileHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(GFFILEHANDLER_FORMATTER_PROPERTY,gffileHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(ROTATIONTIMELIMITINMINUTES_PROPERTY)) {
                if (!props.get(a).equals(rotationOnTimeLimitInMinutesDetail)) {
                  generateAttributeChangeEvent(ROTATIONTIMELIMITINMINUTES_PROPERTY,rotationOnTimeLimitInMinutesDetail,props);
                }
              }
 else               if (a.equals(FLUSHFREQUENCY_PROPERTY)) {
                if (!props.get(a).equals(flushFrequencyDetail)) {
                  generateAttributeChangeEvent(FLUSHFREQUENCY_PROPERTY,flushFrequencyDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_LIMIT_PROPERTY)) {
                if (!props.get(a).equals(filterHandlerDetails)) {
                  generateAttributeChangeEvent(FILEHANDLER_LIMIT_PROPERTY,filterHandlerDetails,props);
                }
              }
 else               if (a.equals(LOGTOCONSOLE_PROPERTY)) {
                if (!props.get(a).equals(logToConsoleDetail)) {
                  generateAttributeChangeEvent(LOGTOCONSOLE_PROPERTY,logToConsoleDetail,props);
                }
              }
 else               if (a.equals(ROTATIONLIMITINBYTES_PROPERTY)) {
                if (!props.get(a).equals(rotationInTimeLimitInBytesDetail)) {
                  generateAttributeChangeEvent(ROTATIONLIMITINBYTES_PROPERTY,rotationInTimeLimitInBytesDetail,props);
                }
              }
 else               if (a.equals(USESYSTEMLOGGING_PROPERTY)) {
                if (!props.get(a).equals(useSystemLoggingDetail)) {
                  generateAttributeChangeEvent(USESYSTEMLOGGING_PROPERTY,useSystemLoggingDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_COUNT_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerCountDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_COUNT_PROPERTY,fileHandlerCountDetail,props);
                }
              }
 else               if (a.equals(RETAINERRORSSTATICTICS_PROPERTY)) {
                if (!props.get(a).equals(retainErrorsStaticticsDetail)) {
                  generateAttributeChangeEvent(RETAINERRORSSTATICTICS_PROPERTY,retainErrorsStaticticsDetail,props);
                }
              }
 else               if (a.equals(LOG4J_VERSION_PROPERTY)) {
                if (!props.get(a).equals(log4jVersionDetail)) {
                  generateAttributeChangeEvent(LOG4J_VERSION_PROPERTY,log4jVersionDetail,props);
                }
              }
 else               if (a.equals(MAXHISTORY_FILES_PROPERTY)) {
                if (!props.get(a).equals(maxHistoryFilesDetail)) {
                  generateAttributeChangeEvent(MAXHISTORY_FILES_PROPERTY,maxHistoryFilesDetail,props);
                }
              }
 else               if (a.equals(ROTATIONONDATECHANGE_PROPERTY)) {
                if (!props.get(a).equals(rotationOnDateChangeDetail)) {
                  generateAttributeChangeEvent(ROTATIONONDATECHANGE_PROPERTY,rotationOnDateChangeDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_PATTERN_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerPatternDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_PATTERN_PROPERTY,fileHandlerPatternDetail,props);
                }
              }
 else               if (a.equals(FILEHANDLER_FORMATTER_PROPERTY)) {
                if (!props.get(a).equals(fileHandlerFormatterDetail)) {
                  generateAttributeChangeEvent(FILEHANDLER_FORMATTER_PROPERTY,fileHandlerFormatterDetail,props);
                }
              }
 else               if (a.equals(LOGFORMAT_DATEFORMAT_PROPERTY)) {
                if (!props.get(a).equals(logFormatDateFormatDetail)) {
                  generateAttributeChangeEvent(LOGFORMAT_DATEFORMAT_PROPERTY,logFormatDateFormatDetail,props);
                }
              }
            }
            logger.log(Level.INFO,"String_Node_Str");
          }
 catch (          Exception e) {
            logger.log(Level.SEVERE,"String_Node_Str",e);
          }
        }
      }
      public void deleted(      File deletedFile){
        logger.log(Level.INFO,"String_Node_Str");
      }
    }
);
  }
  List<EarlyLogger.LevelAndMessage> catchUp=EarlyLogger.getEarlyMessages();
  if (!catchUp.isEmpty()) {
    for (    EarlyLogger.LevelAndMessage levelAndMessage : catchUp) {
      logger.log(levelAndMessage.level,levelAndMessage.msg);
    }
    catchUp.clear();
  }
  ArrayBlockingQueue<LogRecord> catchEarlyMessage=EarlyLogHandler.earlyMessages;
  while (!catchEarlyMessage.isEmpty()) {
    LogRecord logRecord=catchEarlyMessage.poll();
    if (logRecord != null) {
      logger.log(logRecord);
    }
  }
}