const char * const mi_lttng_loglevel_str_unknown = "UNKNOWN";
const char * const mi_lttng_loglevel_str_warning = "TRACE_WARNING";
+/* String related to loglevel JUL */
+const char * const mi_lttng_loglevel_str_jul_all = "JUL_ALL";
+const char * const mi_lttng_loglevel_str_jul_config = "JUL_CONFIG";
+const char * const mi_lttng_loglevel_str_jul_fine = "JUL_FINE";
+const char * const mi_lttng_loglevel_str_jul_finer = "JUL_FINER";
+const char * const mi_lttng_loglevel_str_jul_finest = "JUL_FINEST";
+const char * const mi_lttng_loglevel_str_jul_info = "JUL_INFO";
+const char * const mi_lttng_loglevel_str_jul_off = "JUL_OFF";
+const char * const mi_lttng_loglevel_str_jul_severe = "JUL_SEVERE";
+const char * const mi_lttng_loglevel_str_jul_warning = "JUL_WARNING";
+
/* String related to loglevel type */
const char * const mi_lttng_loglevel_type_all = "ALL";
const char * const mi_lttng_loglevel_type_range = "RANGE";
const char * const mi_lttng_element_snapshot_session_name = "session_name";
const char * const mi_lttng_element_snapshots = "snapshots";
+/* This is a merge of jul loglevel and regular loglevel
+ * Those should never overlap by definition
+ * (see struct lttng_event loglevel)
+ */
const char *mi_lttng_loglevel_string(int value)
{
switch (value) {
return mi_lttng_loglevel_str_debug_line;
case LTTNG_LOGLEVEL_DEBUG:
return mi_lttng_loglevel_str_debug;
+ case LTTNG_LOGLEVEL_JUL_OFF:
+ return mi_lttng_loglevel_str_jul_off;
+ case LTTNG_LOGLEVEL_JUL_SEVERE:
+ return mi_lttng_loglevel_str_jul_severe;
+ case LTTNG_LOGLEVEL_JUL_WARNING:
+ return mi_lttng_loglevel_str_jul_warning;
+ case LTTNG_LOGLEVEL_JUL_INFO:
+ return mi_lttng_loglevel_str_jul_info;
+ case LTTNG_LOGLEVEL_JUL_CONFIG:
+ return mi_lttng_loglevel_str_jul_config;
+ case LTTNG_LOGLEVEL_JUL_FINE:
+ return mi_lttng_loglevel_str_jul_fine;
+ case LTTNG_LOGLEVEL_JUL_FINER:
+ return mi_lttng_loglevel_str_jul_finer;
+ case LTTNG_LOGLEVEL_JUL_FINEST:
+ return mi_lttng_loglevel_str_jul_finest;
+ case LTTNG_LOGLEVEL_JUL_ALL:
+ return mi_lttng_loglevel_str_jul_all;
default:
return mi_lttng_loglevel_str_unknown;
}
return config_domain_type_ust;
case LTTNG_DOMAIN_JUL:
return config_domain_type_jul;
+ case LTTNG_DOMAIN_LOG4J:
+ return config_domain_type_log4j;
default:
/* Should not have an unknown domain */
assert(0);
goto end;
}
if (mi_output_type == LTTNG_MI_XML) {
- mi_writer->writer = config_writer_create(fd_output);
+ mi_writer->writer = config_writer_create(fd_output, 0);
if (!mi_writer->writer) {
goto err_destroy;
}
/* Version string (contain info like rc etc.) */
ret = mi_lttng_writer_write_element_string(writer,
- mi_lttng_element_version_str, VERSION);
+ mi_lttng_element_version_str, version->version);
if (ret) {
goto end;
}
goto end;
}
- /* TODO: attr... not sure how to use the union.... */
+ /* TODO: union attr
+ * This union is not currently used and was added for
+ * future ust domain support.
+ * Date: 25-06-2014
+ * */
if (!is_open) {
/* Closing domain element */
{
int ret;
+ ret = mi_lttng_writer_open_element(writer, config_element_attributes);
+ if (ret) {
+ goto end;
+ }
+
+ ret = mi_lttng_writer_open_element(writer, config_element_probe_attributes);
+ if (ret) {
+ goto end;
+ }
+
if (event->attr.probe.addr != 0) {
/* event probe address */
ret = mi_lttng_writer_write_element_unsigned_int(writer,
goto end;
}
}
+
+ /* Close probe_attributes and attributes */
+ ret = mi_lttng_close_multi_element(writer, 2);
end:
return ret;
}
int mi_lttng_event_function_entry(struct mi_writer *writer,
struct lttng_event *event)
{
+ int ret;
+
+ ret = mi_lttng_writer_open_element(writer, config_element_attributes);
+ if (ret) {
+ goto end;
+ }
+
+ ret = mi_lttng_writer_open_element(writer, config_element_probe_attributes);
+ if (ret) {
+ goto end;
+ }
+
/* event probe symbol_name */
- return mi_lttng_writer_write_element_string(writer,
+ ret = mi_lttng_writer_write_element_string(writer,
config_element_symbol_name, event->attr.ftrace.symbol_name);
+ if (ret) {
+ goto end;
+ }
+
+ /* Close function_attributes and attributes */
+ ret = mi_lttng_close_multi_element(writer, 2);
+end:
+ return ret;
}
LTTNG_HIDDEN
}
break;
}
+ case LTTNG_EVENT_FUNCTION:
+ /* Fallthrough */
case LTTNG_EVENT_PROBE:
ret = mi_lttng_event_function_probe(writer, event);
break;