void mondemand_log_msg (log_level_t level, const char *fname, int lineno, const char *buf)
{
  const int mondemand_level = get_mondemand_level(level);
  if (mondemand_level_is_enabled(client, mondemand_level))
  {
    mondemand_log_real(client, fname, lineno, level, MONDEMAND_NULL_TRACE_ID, "%s", buf);
  }
}
Example #2
0
static int
handle_log_arg (const char *arg,
                struct mondemand_client *client,
                int log_count)
{
  const char *sep  = ":";
  char *text_level;
  char *buffer;
  char *tofree;
  int level;
  int ret = -1;
  struct mondemand_trace_id trace_id = MONDEMAND_NULL_TRACE_ID;

  tofree = buffer = strdup (arg);
  if (buffer == NULL)
    {
      return ret;
    }

  text_level = strsep (&buffer, sep);
  level = mondemand_log_level_from_string (text_level);
  if (level < 0)
    {
      /* level didn't parse so assume its the 3 element form and get
       * a trace id
       */
      trace_id = mondemand_trace_id (strtoul (text_level, NULL, 0));
      text_level = strsep (&buffer, sep);
      level = mondemand_log_level_from_string (text_level);
      if (level < 0)
        {
          fprintf (stderr, "ERROR: invalid level '%s'\n", text_level);
          goto END;
        }
    }
  if (buffer != NULL && strcmp (buffer, "") != 0)
    {
      /* need to call the underlying implementation call because
         I need to specify different 'line' numbers so messages
         aren't counted as repeated */
      ret = mondemand_log_real(client, __FILE__, log_count,
                              level, trace_id, "%s", buffer);
    }
  else
    {
      fprintf (stderr, "WARNING: not sending empty log message\n");
    }

END:
  free (tofree);
  return ret;
}