Program: 134730
Project: 134730
Buggy source:
/** 
 * Logs the given <code>LogRecord</code>.  The record can be modified or dropped by the optional filters provided in   {@link #addLogRecordFilter(alma.acs.logging.AcsLogger.LogRecordFilter)}.  <p> Adding of context information: <ul> <li> If the LogRecord has a parameter that is a map which contains additional information  about the line of code, thread, etc., the log record will be taken as provided, and no context information will be added. This can be useful if <ul> <li> the log record was reconstructed from a remote error by the ACS error handling code (see <code>AcsJException</code>), or <li> if in very exceptional cases application code needs to manipulate such information by hand. </ul> <li> otherwise, context information is inferred, similar to   {@link LogRecord#inferCaller()}, but additionally including thread name and line of code. </ul>   Note that by overloading this method, we intercept all logging activities of the base class.
 * @see java.util.logging.Logger#log(java.util.logging.LogRecord)
 */
public void log(LogRecord record){
  if (record.getLevel().intValue() == Level.OFF.intValue() || record.getLevel().intValue() == AcsLogLevel.OFF.intValue()) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  StopWatch sw_all=null;
  if (PROFILE) {
    sw_all=new StopWatch(null);
  }
  Logger loggerWithLevel=this;
  while (loggerWithLevel != null && loggerWithLevel.getLevel() == null && loggerWithLevel.getParent() != null) {
    loggerWithLevel=loggerWithLevel.getParent();
  }
  int levelValue=-1;
  if (loggerWithLevel.getLevel() == null) {
    if (!noLevelWarningPrinted) {
      System.out.println("String_Node_Str" + getLoggerName() + "String_Node_Str");
      noLevelWarningPrinted=true;
    }
    levelValue=Level.ALL.intValue();
  }
 else {
    noLevelWarningPrinted=false;
    levelValue=loggerWithLevel.getLevel().intValue();
  }
  if (record.getLevel().intValue() < levelValue || levelValue == offValue) {
    return;
  }
  if (loggerName != null) {
    record.setLoggerName(loggerName);
  }
  LogParameterUtil paramUtil=new LogParameterUtil(record);
  Map<String,Object> specialProperties=paramUtil.extractSpecialPropertiesMap();
  if (specialProperties == null) {
    specialProperties=LogParameterUtil.createPropertiesMap();
    List<Object> paramList=paramUtil.getNonSpecialPropertiesMapParameters();
    paramList.add(0,specialProperties);
    record.setParameters(paramList.toArray());
    String threadName=Thread.currentThread().getName();
    specialProperties.put(LogParameterUtil.PARAM_THREAD_NAME,threadName);
    specialProperties.put(LogParameterUtil.PARAM_PROCESSNAME,this.processName);
    specialProperties.put(LogParameterUtil.PARAM_SOURCEOBJECT,this.sourceObject);
    StackTraceElement stack[]=(new Throwable()).getStackTrace();
    int ix=0;
    boolean foundNonLogFrame=false;
    while (ix < stack.length) {
      StackTraceElement frame=stack[ix];
      String cname=frame.getClassName();
      if (!foundNonLogFrame && !loggerClassNames.contains(cname)) {
        record.setSourceClassName(cname);
        record.setSourceMethodName(frame.getMethodName());
        int lineNumber=frame.getLineNumber();
        specialProperties.put(LogParameterUtil.PARAM_LINE,Long.valueOf(lineNumber));
        foundNonLogFrame=true;
        if (this.callStacksToBeIgnored.isEmpty()) {
          break;
        }
      }
      if (foundNonLogFrame) {
        if (callStacksToBeIgnored.contains(concatenateIgnoreLogData(cname,frame.getMethodName()))) {
          return;
        }
      }
      ix++;
    }
  }
  StopWatch sw_afterAcsLogger=null;
  if (PROFILE) {
    sw_afterAcsLogger=sw_all.createStopWatchForSubtask("String_Node_Str");
    LogParameterUtil logParamUtil=new LogParameterUtil(record);
    logParamUtil.setStopWatch(sw_afterAcsLogger);
  }
  if (delegate != null) {
    delegate.log(record);
  }
 else {
    super.log(record);
  }
  if (PROFILE) {
    sw_afterAcsLogger.stop();
    sw_all.stop();
    long elapsedNanos=sw_all.getLapTimeNanos();
    if (profileSlowestCallStopWatch == null || profileSlowestCallStopWatch.getLapTimeNanos() > elapsedNanos) {
      profileSlowestCallStopWatch=sw_all;
    }
    profileLogTimeStat.addValue(elapsedNanos);
    if (profileLogTimeStat.getN() >= profileStatSize) {
      String msg="String_Node_Str" + profileStatSize + "String_Node_Str";
      msg+="String_Node_Str" + profileLogTimeStat.getMean() * 1E-6;
      msg+="String_Node_Str" + profileLogTimeStat.getStandardDeviation() * 1E-6;
      msg+="String_Node_Str";
      System.out.println(msg);
      profileSlowestCallStopWatch.logLapTimeWithSubtaskDetails("String_Node_Str",Level.INFO);
      profileSlowestCallStopWatch=null;
      profileLogTimeStat.clear();
    }
  }
}

Fixed version (ground truth):
/** 
 * Logs the given <code>LogRecord</code>.  The record can be modified or dropped by the optional filters provided in   {@link #addLogRecordFilter(alma.acs.logging.AcsLogger.LogRecordFilter)}.  <p> Adding of context information: <ul> <li> If the LogRecord has a parameter that is a map which contains additional information  about the line of code, thread, etc., the log record will be taken as provided, and no context information will be added. This can be useful if <ul> <li> the log record was reconstructed from a remote error by the ACS error handling code (see <code>AcsJException</code>), or <li> if in very exceptional cases application code needs to manipulate such information by hand. </ul> <li> otherwise, context information is inferred, similar to   {@link LogRecord#inferCaller()}, but additionally including thread name and line of code. </ul>   Note that by overloading this method, we intercept all logging activities of the base class.
 * @see java.util.logging.Logger#log(java.util.logging.LogRecord)
 */
public void log(LogRecord record){
  if (record.getLevel().intValue() == Level.OFF.intValue() || record.getLevel().intValue() == AcsLogLevel.OFF.intValue()) {
    throw new IllegalArgumentException("String_Node_Str");
  }
  StopWatch sw_all=null;
  if (PROFILE) {
    sw_all=new StopWatch(null);
  }
  Logger loggerWithLevel=this;
  while (loggerWithLevel != null && loggerWithLevel.getLevel() == null && loggerWithLevel.getParent() != null) {
    loggerWithLevel=loggerWithLevel.getParent();
  }
  int levelValue=-1;
  if (loggerWithLevel.getLevel() == null) {
    if (!noLevelWarningPrinted) {
      System.out.println("String_Node_Str" + getLoggerName() + "String_Node_Str");
      noLevelWarningPrinted=true;
    }
    levelValue=Level.ALL.intValue();
  }
 else {
    noLevelWarningPrinted=false;
    levelValue=loggerWithLevel.getLevel().intValue();
  }
  if (record.getLevel().intValue() < levelValue || levelValue == offValue) {
    return;
  }
  if (loggerName != null) {
    record.setLoggerName(loggerName);
  }
  LogParameterUtil paramUtil=new LogParameterUtil(record);
  Map<String,Object> specialProperties=paramUtil.extractSpecialPropertiesMap();
  if (specialProperties == null) {
    specialProperties=LogParameterUtil.createPropertiesMap();
    List<Object> paramList=paramUtil.getNonSpecialPropertiesMapParameters();
    paramList.add(0,specialProperties);
    record.setParameters(paramList.toArray());
    String threadName=Thread.currentThread().getName();
    specialProperties.put(LogParameterUtil.PARAM_THREAD_NAME,threadName);
    specialProperties.put(LogParameterUtil.PARAM_PROCESSNAME,this.processName);
    specialProperties.put(LogParameterUtil.PARAM_SOURCEOBJECT,this.sourceObject);
    StackTraceElement stack[]=(new Throwable()).getStackTrace();
    int ix=0;
    boolean foundNonLogFrame=false;
    while (ix < stack.length) {
      StackTraceElement frame=stack[ix];
      String cname=frame.getClassName();
      if (!foundNonLogFrame && !loggerClassNames.contains(cname)) {
        record.setSourceClassName(cname);
        record.setSourceMethodName(frame.getMethodName());
        int lineNumber=frame.getLineNumber();
        specialProperties.put(LogParameterUtil.PARAM_LINE,Long.valueOf(lineNumber));
        foundNonLogFrame=true;
        if (this.callStacksToBeIgnored.isEmpty()) {
          break;
        }
      }
      if (foundNonLogFrame) {
        if (callStacksToBeIgnored.contains(concatenateIgnoreLogData(cname,frame.getMethodName()))) {
          return;
        }
      }
      ix++;
    }
  }
  StopWatch sw_afterAcsLogger=null;
  if (PROFILE) {
    sw_afterAcsLogger=sw_all.createStopWatchForSubtask("String_Node_Str");
    LogParameterUtil logParamUtil=new LogParameterUtil(record);
    logParamUtil.setStopWatch(sw_afterAcsLogger);
  }
  if (delegate != null) {
    delegate.log(record);
  }
 else {
    super.log(record);
  }
  if (PROFILE) {
    sw_afterAcsLogger.stop();
    sw_all.stop();
    long elapsedNanos=sw_all.getLapTimeNanos();
    if (profileSlowestCallStopWatch == null || profileSlowestCallStopWatch.getLapTimeNanos() < elapsedNanos) {
      profileSlowestCallStopWatch=sw_all;
    }
    profileLogTimeStat.addValue(elapsedNanos);
    if (profileLogTimeStat.getN() >= profileStatSize) {
      String msg="String_Node_Str" + profileStatSize + "String_Node_Str";
      msg+="String_Node_Str" + profileLogTimeStat.getMean() * 1E-6;
      msg+="String_Node_Str" + profileLogTimeStat.getStandardDeviation() * 1E-6;
      msg+="String_Node_Str";
      System.out.println(msg);
      profileSlowestCallStopWatch.logLapTimeWithSubtaskDetails("String_Node_Str",Level.INFO);
      profileSlowestCallStopWatch=null;
      profileLogTimeStat.clear();
    }
  }
}