示例#1
0
void wbLogger_append(wbLogLevel_t level, string msg, const char *file,
                     const char *fun, int line) {
  wbLogEntry_t elem;
  wbLogger_t logger;

  wb_init(NULL, NULL);

  logger = _logger;

  if (wbLogger_getLevel(logger) < level) {
    return;
  }

  elem = wbLogEntry_initialize(level, msg, file, fun, line);

#ifdef wbLogger_printOnLog
  if (wbLogger_printOnLog) {
    if (level <= wbLogger_getLevel(logger) && elem) {
      json11::Json json = json11::Json::object{
          {"type", "logger"},
          {"id", wbLogEntry_getId(elem)},
          {"session_id", wbLogEntry_getSessionId(elem)},
          {"data", wbLogEntry_toJSONObject(elem)}};
      std::cout << json.dump() << std::endl;
    }
  }
#endif /* wbLogger_printOnLog */

  if (wbLogger_getHead(logger) == NULL) {
    wbLogger_setHead(logger, elem);
  } else {
    wbLogEntry_t prev = wbLogger_getHead(logger);

    while (wbLogEntry_hasNext(prev)) {
      prev = wbLogEntry_getNext(prev);
    }
    wbLogEntry_setNext(prev, elem);
  }

#if 0
  if (level <= wbLogger_getLevel(logger) && elem) {
    const char *levelName = getLevelName(level);

    fprintf(stderr, "= LOG: %s: %s (In %s:%s on line %d). =\n", levelName,
            wbLogEntry_getMessage(elem), wbLogEntry_getFile(elem),
            wbLogEntry_getFunction(elem), wbLogEntry_getLine(elem));
  }
#endif

  wbLogger_incrementLength(logger);

  return;
}
示例#2
0
void wbLogger_append(wbLogLevel_t level, string msg, const char *file,
                     const char *fun, int line) {
  wbLogEntry_t elem;
  wbLogger_t logger;

  wb_init();

  logger = _logger;

  if (wbLogger_getLevel(logger) < level) {
    return;
  }

  elem = wbLogEntry_initialize(level, msg, file, fun, line);

  if (wbLogger_getHead(logger) == NULL) {
    wbLogger_setHead(logger, elem);
  } else {
    wbLogEntry_t prev = wbLogger_getHead(logger);

    while (wbLogEntry_hasNext(prev)) {
      prev = wbLogEntry_getNext(prev);
    }
    wbLogEntry_setNext(prev, elem);
  }

#if 0
  if (level <= wbLogger_getLevel(logger) && elem) {
    const char *levelName = getLevelName(level);

    fprintf(stderr, "= LOG: %s: %s (In %s:%s on line %d). =\n", levelName,
            wbLogEntry_getMessage(elem), wbLogEntry_getFile(elem),
            wbLogEntry_getFunction(elem), wbLogEntry_getLine(elem));
  }
#endif

  wbLogger_incrementLength(logger);

  return;
}
示例#3
0
static json11::Json wbLogger_toJSONObject(wbLogger_t logger) {
  std::vector<json11::Json> elems{};

  if (logger != NULL) {
    wbLogEntry_t iter;
    stringstream ss;

    for (iter = wbLogger_getHead(logger); iter != NULL;
         iter = wbLogEntry_getNext(iter)) {
      elems.push_back(wbLogEntry_toJSONObject(iter));
    }
  }
  return json11::Json(elems);
}
示例#4
0
void wbLogger_clear(wbLogger_t logger) {
  if (logger != NULL) {
    wbLogEntry_t tmp;
    wbLogEntry_t iter;

    iter = wbLogger_getHead(logger);
    while (iter != NULL) {
      tmp = wbLogEntry_getNext(iter);
      wbLogEntry_delete(iter);
      iter = tmp;
    }

    wbLogger_setLength(logger, 0);
    wbLogger_setHead(logger, NULL);
  }
}
示例#5
0
string wbLogger_toJSON(wbLogger_t logger) {
  if (logger != NULL) {
    wbLogEntry_t iter;
    stringstream ss;

    for (iter = wbLogger_getHead(logger); iter != NULL;
         iter = wbLogEntry_getNext(iter)) {
      ss << wbLogEntry_toJSON(iter);
      if (wbLogEntry_getNext(iter) != NULL) {
        ss << ",\n";
      }
    }

    return ss.str();
  }
  return "";
}
示例#6
0
string wbLogger_toXML(wbLogger_t logger) {
  if (logger != NULL) {
    wbLogEntry_t iter;
    stringstream ss;

    ss << "<logger>\n";
    ss << "<type>"
       << "Logger"
       << "</type>\n";
    ss << "<elements>\n";
    for (iter = wbLogger_getHead(logger); iter != NULL;
         iter = wbLogEntry_getNext(iter)) {
      ss << wbLogEntry_toXML(iter);
    }
    ss << "</elements>\n";
    ss << "</logger>\n";

    return ss.str();
  }
  return "";
}
示例#7
0
string wbLogger_toJSON(wbLogger_t logger) {
  if (logger != NULL) {
    wbLogEntry_t iter;
    stringstream ss;

    ss << "{\n";
    ss << wbString_quote("elements") << ":[\n";
    for (iter = wbLogger_getHead(logger); iter != NULL;
         iter = wbLogEntry_getNext(iter)) {
      ss << wbLogEntry_toJSON(iter);
      if (wbLogEntry_getNext(iter) != NULL) {
        ss << ",\n";
      }
    }
    ss << "]\n";
    ss << "}\n";

    return ss.str();
  }
  return "";
}