Beispiel #1
0
END_TEST

#ifdef HAVE_PARSE_PRINTF_FORMAT
/**
 * Test parsing additional format strings, that are only supported if
 * we're under glibc.
 */
START_TEST (test_positional_params)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_positional_params", 0, LOG_LOCAL0);

#define COMPLEX_FORMAT \
  "%3$*5$.*2$hhd , %1$Lf , %4$.3s , %4$s", 1.0L, 5, (char)100, "prefix", -8
#define COMPLEX_RESULT "00100    , 1.000000 , pre , prefix"
  msg = ul_format (LOG_DEBUG, COMPLEX_FORMAT,
                   "simple1", "value1",
                   "complex", COMPLEX_FORMAT,
                   "simple2", "value2",
                   NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "msg", COMPLEX_RESULT);
  verify_value (jo, "simple1", "value1");
  verify_value (jo, "complex", COMPLEX_RESULT);
  verify_value (jo, "simple2", "value2");

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #2
0
int globalInit()
{
    g_pConf = &gConf;
    if (0 != loadConfig(CONF_PATH, CONF_FILENAME)) {
        ul_writelog(UL_LOG_FATAL,
                "Can not load config path=%s,fileName=%s",
                CONF_PATH, CONF_FILENAME);
        return -1;
    }
    logstat.events = g_pConf->iLogLevel;

    // 打开日志文件,打开之后正常日志默认写入diffPro.log文件中,错误日志写入diffPro.log.wf
    if (0 != ul_openlog(g_pConf->pLogPath, g_pConf->pLogFilename, &logstat, 1024)) {
        fprintf(stderr, "Fail to open log,path=%s,filename=%s",
                g_pConf->pLogPath, g_pConf->pLogFilename);
        return -1;
    }

    // 根据词表文件大小获取:开辟进程数和split词表文件时的时间戳。
    if (getExtraArgs() != 0) {
        return -1;
    }

    return 0;
}
Beispiel #3
0
END_TEST

/**
 * Test that using ul_openlog() does work, and sets up the program
 * identity appropriately.
 */
START_TEST (test_ul_openlog)
{
  char *msg;
  struct json_object *jo;
  char host[_POSIX_HOST_NAME_MAX + 1];

  ul_openlog ("umberlog/test_ul_openlog", 0, LOG_LOCAL0);

  msg = ul_format (LOG_DEBUG, "hello, I'm %s!", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  gethostname (host, _POSIX_HOST_NAME_MAX);

  verify_value (jo, "msg", "hello, I'm test_ul_openlog!");
  verify_value (jo, "facility", "local0");
  verify_value (jo, "priority", "debug");
  verify_value (jo, "program", "umberlog/test_ul_openlog");
  verify_value_exists (jo, "pid");
  verify_value_exists (jo, "uid");
  verify_value_exists (jo, "gid");
  verify_value_exists (jo, "timestamp");
  verify_value (jo, "host", host);

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #4
0
END_TEST

/**
 * Test that discovering priorities work, and the implicit pid
 * overrides the explicit one.
 */
START_TEST (test_discover_priority)
{
  char *msg, *pid;
  struct json_object *jo;

  ul_openlog ("umberlog/test_discover_priority", 0, LOG_LOCAL0);
  ul_set_log_flags (LOG_UL_ALL);

  msg = ul_format (LOG_DEBUG, "testing 1, 2, 3...",
                   "pid", "%d", getpid () + 42,
                   NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "msg", "testing 1, 2, 3...");

  if (asprintf (&pid, "%d", getpid ()) == -1)
    abort ();
  verify_value (jo, "pid", pid);
  free (pid);

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #5
0
END_TEST

/**
 * Test adding additional fields.
 */
START_TEST (test_additional_fields)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_additional_fields", 0, LOG_LOCAL0);

  msg = ul_format (LOG_DEBUG, "testing 1, 2, 3...",
                   "random_number", "%d", 42,
                   "random_string", "fourty-two",
                   NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "msg", "testing 1, 2, 3...");
  verify_value (jo, "random_number", "42");
  verify_value (jo, "random_string", "fourty-two");

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #6
0
END_TEST

/**
 * Test turning off the timestamp.
 */
START_TEST (test_no_timestamp)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_no_timestamp", 0, LOG_LOCAL0);
  ul_set_log_flags (LOG_UL_NOTIME);

  msg = ul_format (LOG_DEBUG, "hello, I'm %s!", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "msg", "hello, I'm test_no_timestamp!");
  verify_value (jo, "facility", "local0");
  verify_value (jo, "priority", "debug");
  verify_value (jo, "program", "umberlog/test_no_timestamp");
  verify_value_exists (jo, "pid");
  verify_value_exists (jo, "uid");
  verify_value_exists (jo, "gid");
  verify_value_missing (jo, "timestamp");
  verify_value_exists (jo, "host");

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #7
0
END_TEST

/**
 * Test that setting LOG_UL_NOIMPLICIT will, indeed, turn off
 * automatically discovered fields.
 */
START_TEST (test_no_implicit)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_no_implicit", 0, LOG_LOCAL0);
  ul_set_log_flags (LOG_UL_NOIMPLICIT);

  msg = ul_format (LOG_DEBUG, "hello, I'm %s!", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "msg", "hello, I'm test_no_implicit!");
  verify_value_missing (jo, "facility");
  verify_value_missing (jo, "priority");
  verify_value_missing (jo, "program");
  verify_value_missing (jo, "pid");
  verify_value_missing (jo, "uid");
  verify_value_missing (jo, "gid");
  verify_value_missing (jo, "host");
  verify_value_missing (jo, "timestamp");

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #8
0
END_TEST

/**
 * Test that ul_openlog() will ignore any LOG_UL_* flags.
 */
START_TEST (test_ul_openlog_flag_ignore)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_ul_openlog_flag_ignore", LOG_UL_NOIMPLICIT,
              LOG_LOCAL0);

  msg = ul_format (LOG_DEBUG, "hello, I'm %s!", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value_exists (jo, "pid");
  verify_value_exists (jo, "uid");
  verify_value_exists (jo, "gid");
  verify_value_exists (jo, "host");

  json_object_put (jo);

  ul_closelog ();
}
Beispiel #9
0
END_TEST

/**
 * Test that closelog() does not clear the previous flag settings.
 */
START_TEST (test_closelog)
{
  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_closelog", 0, LOG_LOCAL0);
  ul_set_log_flags (LOG_UL_NOIMPLICIT);
  ul_closelog ();

  msg = ul_format (LOG_DEBUG, "%s", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value_missing (jo, "facility");

  json_object_put (jo);

  ul_openlog ("umberlog/test_closelog", 0, LOG_LOCAL0);
  ul_closelog ();

  msg = ul_format (LOG_DEBUG, "%s", __FUNCTION__, NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value_missing (jo, "facility");
  verify_value_missing (jo, "program");

  verify_value_missing (jo, "pid");
  verify_value_missing (jo, "uid");
  verify_value_missing (jo, "gid");
  verify_value_missing (jo, "host");

  json_object_put (jo);
}
Beispiel #10
0
int main(int argc,char** argv)
{
    
    int ret = 0;
    das_lib::conf_t conf;

    FLAGS_flagfile="./conf/startup/gflags.conf";
    ret = google::ParseCommandLineFlags(&argc, &argv, true);
    if (ret < 0) {
        DL_LOG_FATAL("Fail to parse flags");
        return -1;
    }

    ul_logstat_t ls;
    ls.spec = FLAGS_log_to_screen ? UL_LOGTTY : 0;
    ls.to_syslog = 15;
    ls.events = 15;
    if (ul_openlog("./log", FLAGS_log_prefix_name.c_str(), &ls, 100) < 0) {
        DL_LOG_FATAL("Fail to open log");
    }

    if (ret < 0) {
        DL_LOG_FATAL ("Fail to load_conf!");
        return -1;
    }

     mrf::ConfigureService &cs = *mrf::GlobalConfigureService::instance();
    if (!cs.load("./conf/startup/bs.conf")) {
        return -1;
    }

    ret = conf.bdlib.init(cs["lib_conf"]);
    if (! ret ) {
        DL_LOG_FATAL ("Fail to init bdlib!");
        return -1;
    }
    
    DL_LOG_TRACE("Create inc thread");
    
    inc_run(&conf);
        
    ul_closelog(0);
    
    return 0;
}
Beispiel #11
0
END_TEST

/**
 * Test for correct JSON escaping.
 */
START_TEST (test_json_escape)
{
  static const char control_chars[] =
    "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f"
    "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f"
    "\x20";

  char *msg;
  struct json_object *jo;

  ul_openlog ("umberlog/test_json_escape", 0, LOG_LOCAL0);

  msg = ul_format (LOG_DEBUG, "%s", __FUNCTION__,
                   "quotes", "Hi, \"quoted value\" speaking!",
                   "\"really\"", "yeah",
                   "control", "foo\nbar",
                   "utf8", "Árvíztűrő tükörfúrógép",
                   "junk", "\013foo",
                   "all_control", control_chars,
                   NULL);
  jo = parse_msg (msg);
  free (msg);

  verify_value (jo, "quotes", "Hi, \"quoted value\" speaking!");
  verify_value (jo, "\"really\"", "yeah");
  verify_value (jo, "control", "foo\nbar");
  verify_value (jo, "utf8", "Árvíztűrő tükörfúrógép");
  verify_value (jo, "junk", "\013foo");
  verify_value (jo, "all_control", control_chars);

  json_object_put (jo);

  ul_closelog ();
}