Ejemplo n.º 1
0
  public static void buildXLogData(final String date, StyledText text, XLogPack p, int serverId) {

    final int servId = serverId;

    String error = TextProxy.error.getLoadText(date, p.error, servId);
    String objName = TextProxy.object.getLoadText(date, p.objHash, servId);

    int slen = 0;
    java.util.List<StyleRange> sr = new ArrayList<StyleRange>();

    Color red = text.getDisplay().getSystemColor(SWT.COLOR_RED);

    final StringBuffer sb = new StringBuffer();
    sb.append("► txid    = ").append(Hexa32.toString32(p.txid)).append("\n");
    sb.append("► objName = ").append(objName).append("\n");
    sb.append("► endtime = ").append(DateUtil.timestamp(p.endTime)).append("\n");
    sb.append("► elapsed = ").append(FormatUtil.print(p.elapsed, "#,##0")).append(" ms\n");
    sb.append("► service = ").append(TextProxy.service.getText(p.service)).append("\n");
    if (error != null) {
      sb.append("► error   = ");
      slen = sb.length();
      sb.append(error).append("\n");
      sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL));
    }

    sb.append("► ipaddr=" + IPUtil.toString(p.ipaddr) + ", ");
    sb.append("userid=" + p.userid);
    sb.append("\n► cpu=" + FormatUtil.print(p.cpu, "#,##0") + " ms, ");
    sb.append("bytes=" + p.bytes + ", ");
    sb.append("status=" + p.status);
    if (p.sqlCount > 0) {
      sb.append("\n► sqlCount=" + p.sqlCount + ", ");
      sb.append("sqlTime=" + FormatUtil.print(p.sqlTime, "#,##0") + " ms");
    }
    if (p.apicallCount > 0) {
      sb.append("\n► ApiCallCount=" + p.apicallCount + ", ");
      sb.append("ApiCallTime=" + FormatUtil.print(p.apicallTime, "#,##0") + " ms");
    }

    String t = TextProxy.userAgent.getLoadText(date, p.userAgent, serverId);
    if (StringUtil.isNotEmpty(t)) {
      sb.append("\n► userAgent=" + t);
    }

    t = TextProxy.referer.getLoadText(date, p.referer, serverId);
    if (StringUtil.isNotEmpty(t)) {
      sb.append("\n► referer=" + t);
    }

    t = TextProxy.group.getLoadText(date, p.group, serverId);
    if (StringUtil.isNotEmpty(t)) {
      sb.append("\n► group=" + t);
    }

    sb.append("\n");

    text.setText(sb.toString());
    text.setStyleRanges(sr.toArray(new StyleRange[sr.size()]));
  }
Ejemplo n.º 2
0
  public static void buildProfile(
      final String date,
      StyledText text,
      XLogPack pack,
      StepWrapper[] orgProfiles,
      int pageNum,
      int rowPerPage,
      Button prevBtn,
      Button nextBtn,
      Button startBtn,
      Button endBtn,
      int length,
      int serverId,
      int searchLineIndex,
      boolean isSummary) {

    String spaceStr = "";
    String astarStr = "";
    for (int j = 0; j < length; j++) {
      spaceStr += " ";
      astarStr += "*";
    }

    if (orgProfiles == null) {
      orgProfiles = new StepWrapper[0];
    }

    boolean lastPage = false;
    int startIdx = pageNum * rowPerPage;
    int lastIdx = (pageNum * rowPerPage) + rowPerPage;
    if (lastIdx >= orgProfiles.length) {
      lastIdx = orgProfiles.length;
      lastPage = true;
    }

    int ix = 0;
    StepWrapper[] profiles = new StepWrapper[lastIdx - startIdx];
    for (int inx = startIdx; inx < lastIdx; inx++) {
      profiles[ix] = orgProfiles[inx];
      ix++;
    }

    int slen = 0;
    java.util.List<StyleRange> sr = new ArrayList<StyleRange>();

    Color blue = text.getDisplay().getSystemColor(SWT.COLOR_BLUE);
    Color dmagenta = text.getDisplay().getSystemColor(SWT.COLOR_DARK_MAGENTA);
    Color red = text.getDisplay().getSystemColor(SWT.COLOR_RED);
    Color yellow = text.getDisplay().getSystemColor(SWT.COLOR_YELLOW);

    Color dgreen = text.getDisplay().getSystemColor(SWT.COLOR_DARK_GREEN);

    final StringBuffer sb = new StringBuffer();

    sb.append(
        "------------------------------------------------------------------------------------------\n");
    sb.append(
        "  p# " + spaceStr + "# " + spaceStr + " TIME         T-GAP   CPU          CONTENTS\n");
    sb.append(
        "------------------------------------------------------------------------------------------\n");

    if (profiles.length == 0) {
      sb.append("\n                     ( No xlog profile collected ) ");
      text.setText(sb.toString());
      text.setStyleRanges(sr.toArray(new StyleRange[sr.size()]));
      return;
    }
    long stime = pack.endTime - pack.elapsed;
    long prev_tm = stime;
    if (pageNum > 0) {
      prev_tm = orgProfiles[startIdx - 1].time;
    }
    long prev_cpu = 0;
    if (pageNum > 0) {
      prev_cpu = orgProfiles[startIdx - 1].cpu;
    }

    if (pageNum == 0) {
      sb.append(" " + spaceStr + " ");
      sb.append(" ");
      sb.append("[" + astarStr + "]");
      sb.append(" ");
      sb.append(DateUtil.getLogTime(stime));
      sb.append("   ");
      sb.append(String.format("%6s", "0"));
      sb.append(" ");
      sb.append(String.format("%6s", "0"));
      sb.append("  start transaction \n");
    }

    long tm = pack.endTime;
    long cpu = pack.cpu;

    for (int i = 0; i < profiles.length; i++) {

      if (profiles[i].step instanceof StepSummary) {
        int p1 = sb.length();
        sb.append(spaceStr).append("   ");
        sb.append(String.format("[%0" + length + "d]", profiles[i].sSummaryIdx));
        sb.append(" ");
        int lineHead = sb.length() - p1;

        StepSummary sum = (StepSummary) profiles[i].step;
        switch (sum.getStepType()) {
          case StepEnum.METHOD_SUM:
            MethodSum p = (MethodSum) sum;
            slen = sb.length();

            String m = TextProxy.method.getText(p.hash);
            if (m == null) m = Hexa32.toString32(p.hash);
            sb.append(m).append(" ");

            if (searchLineIndex == profiles[i].sSummaryIdx) {
              sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
            } else {
              sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL));
            }

            sb.append(" count=").append(FormatUtil.print(p.count, "#,##0"));
            sb.append(" time=").append(FormatUtil.print(p.elapsed, "#,##0")).append(" ms");
            sb.append(" cpu=").append(FormatUtil.print(p.cputime, "#,##0"));

            sb.append("\n");
            break;
          case StepEnum.SQL_SUM:
            SqlSum sql = (SqlSum) sum;
            slen = sb.length();
            ProfileText.toString(sb, sql, serverId);
            if (searchLineIndex == profiles[i].sSummaryIdx) {
              sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
            } else {
              sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL));
            }
            sb.append("\n");
            break;
          case StepEnum.APICALL_SUM:
            ApiCallSum apicall = (ApiCallSum) sum;
            slen = sb.length();
            ProfileText.toString(sb, apicall);
            if (searchLineIndex == profiles[i].sSummaryIdx) {
              sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
            } else {
              sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL));
            }
            sb.append("\n");
            break;
          case StepEnum.SOCKET_SUM:
            XLogProfileView.isSummary = true;
            SocketSum socketSum = (SocketSum) sum;
            slen = sb.length();
            ProfileText.toString(sb, socketSum);
            sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL));
            sb.append("\n");
            break;
        }
        continue;
      }

      StepSingle stepSingle = (StepSingle) profiles[i].step;
      tm = profiles[i].time;
      cpu = profiles[i].cpu;

      int p1 = sb.length();
      String pid = String.format("[%0" + length + "d]", stepSingle.parent);
      sb.append((stepSingle.parent == -1) ? spaceStr + "  " : pid);
      sb.append(" ");
      sb.append(String.format("[%0" + length + "d]", stepSingle.index));
      sb.append(" ");
      sb.append(DateUtil.getLogTime(tm));
      sb.append("   ");
      sb.append(String.format("%6s", FormatUtil.print(tm - prev_tm, "#,##0")));
      sb.append(" ");
      sb.append(String.format("%6s", FormatUtil.print(cpu - prev_cpu, "#,##0")));
      sb.append("  ");
      int lineHead = sb.length() - p1;

      int space = profiles[i].indent;
      while (space > 0) {
        sb.append(" ");
        space--;
      }

      switch (stepSingle.getStepType()) {
        case StepEnum.METHOD:
          slen = sb.length();
          ProfileText.toString(sb, (MethodStep) stepSingle);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          }
          break;
        case StepEnum.METHOD2:
          slen = sb.length();
          ProfileText.toString(sb, (MethodStep) stepSingle);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          }
          MethodStep2 m2 = (MethodStep2) stepSingle;
          if (m2.error != 0) {
            slen = sb.length();
            sb.append("\n").append(TextProxy.error.getText(m2.error));
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL));
          }
          break;
        case StepEnum.SQL:
        case StepEnum.SQL2:
        case StepEnum.SQL3:
          SqlStep sql = (SqlStep) stepSingle;
          slen = sb.length();
          ProfileText.toString(sb, sql, serverId, lineHead, false);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          } else {
            sr.add(ProfileText.style(slen, sb.length() - slen, blue, SWT.NORMAL));
          }
          if (sql.error != 0) {
            slen = sb.length();
            sb.append("\n").append(TextProxy.error.getText(sql.error));
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL));
          }
          break;
        case StepEnum.MESSAGE:
          slen = sb.length();
          ProfileText.toString(sb, (MessageStep) stepSingle);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          } else {
            sr.add(ProfileText.style(slen, sb.length() - slen, dgreen, SWT.NORMAL));
          }
          break;
        case StepEnum.HASHED_MESSAGE:
          slen = sb.length();
          ProfileText.toString(sb, (HashedMessageStep) stepSingle);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          } else {
            sr.add(ProfileText.style(slen, sb.length() - slen, dgreen, SWT.NORMAL));
          }
          break;
        case StepEnum.APICALL:
          ApiCallStep apicall = (ApiCallStep) stepSingle;
          slen = sb.length();
          ProfileText.toString(sb, apicall);
          if (searchLineIndex == stepSingle.index) {
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.BOLD, yellow));
          } else {
            sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL));
          }
          if (apicall.error != 0) {
            slen = sb.length();
            sb.append("\n").append(TextProxy.error.getText(apicall.error));
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL));
          }
          break;
        case StepEnum.SOCKET:
          SocketStep socket = (SocketStep) stepSingle;
          slen = sb.length();
          ProfileText.toString(sb, socket);
          sr.add(ProfileText.style(slen, sb.length() - slen, dmagenta, SWT.NORMAL));
          if (socket.error != 0) {
            slen = sb.length();
            sb.append("\n").append(TextProxy.error.getText(socket.error));
            sr.add(ProfileText.style(slen, sb.length() - slen, red, SWT.NORMAL));
          }
          break;
      }
      sb.append("\n");
      prev_cpu = cpu;
      prev_tm = tm;
    }

    if (lastPage) {

      nextBtn.setEnabled(false);
      endBtn.setEnabled(false);

      tm = pack.endTime;
      cpu = pack.cpu;
      // slen = sb.length();
      sb.append(" " + spaceStr + " ");
      sb.append(" ");
      sb.append("[" + astarStr + "]");
      sb.append(" ");
      sb.append(DateUtil.getLogTime(tm));
      sb.append("   ");
      if (!isSummary) {
        sb.append(String.format("%6s", FormatUtil.print(tm - prev_tm, "#,##0")));
      } else {
        sb.append(String.format("%6s", FormatUtil.print(pack.elapsed, "#,##0")));
      }
      sb.append(" ");
      sb.append(String.format("%6s", FormatUtil.print(cpu - prev_cpu, "#,##0")));
      sb.append("  end of transaction \n");

      // sr.add(ProfileText.style(slen, sb.length() - slen, dblue, SWT.NORMAL));
      sb.append(
          "------------------------------------------------------------------------------------------\n");
    } else {
      nextBtn.setEnabled(true);
      endBtn.setEnabled(true);
    }

    if (pageNum == 0) {
      prevBtn.setEnabled(false);
      startBtn.setEnabled(false);
    } else {
      prevBtn.setEnabled(true);
      startBtn.setEnabled(true);
    }
    text.setText(sb.toString());
    text.setStyleRanges(sr.toArray(new StyleRange[sr.size()]));
  }