int opt_userspace;
int opt_jul;
int opt_log4j;
+int opt_log4j2;
int opt_python;
int opt_enable_all;
char *opt_probe;
{ "userspace", 'u', POPT_ARG_NONE, nullptr, OPT_USERSPACE, nullptr, nullptr },
{ "jul", 'j', POPT_ARG_VAL, &opt_jul, 1, nullptr, nullptr },
{ "log4j", 'l', POPT_ARG_VAL, &opt_log4j, 1, nullptr, nullptr },
+ { "log4j2", 0, POPT_ARG_VAL, &opt_log4j2, 1, nullptr, nullptr },
{ "python", 'p', POPT_ARG_VAL, &opt_python, 1, nullptr, nullptr },
{ "tracepoint", 0, POPT_ARG_NONE, nullptr, OPT_TRACEPOINT, nullptr, nullptr },
{ "probe", 0, POPT_ARG_STRING, &opt_probe, OPT_PROBE, nullptr, nullptr },
dom.type = LTTNG_DOMAIN_LOG4J;
/* Default. */
dom.buf_type = LTTNG_BUFFER_PER_UID;
+ } else if (opt_log4j2) {
+ dom.type = LTTNG_DOMAIN_LOG4J2;
+ /* Default. */
+ dom.buf_type = LTTNG_BUFFER_PER_UID;
} else if (opt_python) {
dom.type = LTTNG_DOMAIN_PYTHON;
/* Default. */
case LTTNG_DOMAIN_KERNEL:
case LTTNG_DOMAIN_JUL:
case LTTNG_DOMAIN_LOG4J:
+ case LTTNG_DOMAIN_LOG4J2:
case LTTNG_DOMAIN_PYTHON:
ERR("Event name exclusions are not supported for %s event rules",
lttng_domain_type_str(dom.type));
} else {
ev->loglevel = -1;
}
- } else if (opt_jul || opt_log4j || opt_python) {
+ } else if (opt_jul || opt_log4j || opt_log4j2 || opt_python) {
if (opt_event_type != LTTNG_EVENT_ALL &&
opt_event_type != LTTNG_EVENT_TRACEPOINT) {
ERR("Instrumentation point type not supported for the %s domain",
name_search_ret = loglevel_log4j_name_to_value(opt_loglevel,
&loglevel);
ev->loglevel = (int) loglevel;
+ } else if (opt_log4j2) {
+ enum lttng_loglevel_log4j2 loglevel;
+
+ name_search_ret = loglevel_log4j2_name_to_value(
+ opt_loglevel, &loglevel);
+ ev->loglevel = (int) loglevel;
} else {
/* python domain. */
enum lttng_loglevel_python loglevel;
ev->loglevel = LTTNG_LOGLEVEL_JUL_ALL;
} else if (opt_log4j) {
ev->loglevel = LTTNG_LOGLEVEL_LOG4J_ALL;
+ } else if (opt_log4j2) {
+ ev->loglevel = LTTNG_LOGLEVEL_LOG4J2_ALL;
} else if (opt_python) {
ev->loglevel = LTTNG_LOGLEVEL_PYTHON_DEBUG;
}
}
if (!opt_filter) {
- char *exclusion_string;
-
command_ret = lttng_enable_event_with_exclusions(
handle,
ev,
nullptr,
lttng_dynamic_pointer_array_get_count(&exclusions),
(char **) exclusions.array.buffer.data);
- exclusion_string = print_exclusions(&exclusions);
+
+ auto exclusion_string =
+ lttng::make_unique_wrapper<char, lttng::memory::free>(
+ print_exclusions(&exclusions));
if (!exclusion_string) {
PERROR("Cannot allocate exclusion_string");
error = 1;
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
print_channel_name(channel_name),
session_name.c_str());
warn = 1;
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
command_ret == -LTTNG_ERR_NEED_CHANNEL_NAME ?
print_raw_channel_name(channel_name) :
print_channel_name(channel_name),
lttng_strerror(command_ret),
session_name.c_str());
+
+ if (opt_kernel) {
+ print_kernel_tracer_status_error();
+ }
+
error = 1;
break;
}
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
print_channel_name(channel_name));
break;
}
case LTTNG_DOMAIN_JUL:
case LTTNG_DOMAIN_LOG4J:
+ case LTTNG_DOMAIN_LOG4J2:
case LTTNG_DOMAIN_PYTHON:
/*
* Don't print the default channel
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string);
+ exclusion_string.get());
break;
default:
abort();
}
}
-
- free(exclusion_string);
} else {
- char *exclusion_string;
-
/* Filter present */
ev->filter = 1;
opt_filter,
lttng_dynamic_pointer_array_get_count(&exclusions),
(char **) exclusions.array.buffer.data);
- exclusion_string = print_exclusions(&exclusions);
+
+ auto exclusion_string =
+ lttng::make_unique_wrapper<char, lttng::memory::free>(
+ print_exclusions(&exclusions));
if (!exclusion_string) {
PERROR("Failed allocate exclusion string");
error = 1;
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
opt_filter,
print_channel_name(channel_name));
warn = 1;
(std::string("with pattern `") +
pattern + std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
opt_filter,
command_ret == -LTTNG_ERR_NEED_CHANNEL_NAME ?
print_raw_channel_name(channel_name) :
lttng_strerror(command_ret),
session_name.c_str());
error = 1;
+
+ if (opt_kernel) {
+ print_kernel_tracer_status_error();
+ }
+
break;
}
std::string("`"))
.c_str(),
- exclusion_string,
+ exclusion_string.get(),
opt_filter);
}
-
- free(exclusion_string);
}
if (lttng_opt_mi) {
}
ret = print_missing_or_multiple_domains(
- opt_kernel + opt_userspace + opt_jul + opt_log4j + opt_python, true);
+ opt_kernel + opt_userspace + opt_jul + opt_log4j + opt_log4j2 + opt_python, true);
if (ret) {
return CMD_ERROR;
}
if (!opt_session_name) {
const auto rc_file_session_name =
- lttng::make_unique_wrapper<char, lttng::free>(get_session_name());
+ lttng::make_unique_wrapper<char, lttng::memory::free>(get_session_name());
if (!rc_file_session_name) {
return CMD_ERROR;