eal: change specific log levels at startup
Example of use: ./app/test-pmd --log-level='pmd\.i40e.*,8' This enables debug logs for all dynamic logs whose type starts with 'pmd.i40e'. Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
This commit is contained in:
parent
a5279180f5
commit
845afe51e4
@ -519,10 +519,8 @@ rte_eal_init(int argc, char **argv)
|
||||
|
||||
thread_id = pthread_self();
|
||||
|
||||
eal_log_level_parse(argc, argv);
|
||||
|
||||
/* set log level as early as possible */
|
||||
rte_set_log_level(internal_config.log_level);
|
||||
eal_log_level_parse(argc, argv);
|
||||
|
||||
if (rte_eal_cpu_init() < 0) {
|
||||
rte_eal_init_alert("Cannot detect lcores.");
|
||||
|
@ -739,25 +739,53 @@ eal_parse_syslog(const char *facility, struct internal_config *conf)
|
||||
}
|
||||
|
||||
static int
|
||||
eal_parse_log_level(const char *level, uint32_t *log_level)
|
||||
eal_parse_log_level(const char *arg, struct internal_config *conf)
|
||||
{
|
||||
char *end;
|
||||
char *end, *str, *type, *level;
|
||||
unsigned long tmp;
|
||||
|
||||
str = strdup(arg);
|
||||
if (str == NULL)
|
||||
return -1;
|
||||
|
||||
if (strchr(str, ',') == NULL) {
|
||||
type = NULL;
|
||||
level = str;
|
||||
} else {
|
||||
type = strsep(&str, ",");
|
||||
level = strsep(&str, ",");
|
||||
}
|
||||
|
||||
errno = 0;
|
||||
tmp = strtoul(level, &end, 0);
|
||||
|
||||
/* check for errors */
|
||||
if ((errno != 0) || (level[0] == '\0') ||
|
||||
end == NULL || (*end != '\0'))
|
||||
return -1;
|
||||
end == NULL || (*end != '\0'))
|
||||
goto fail;
|
||||
|
||||
/* log_level is a uint32_t */
|
||||
if (tmp >= UINT32_MAX)
|
||||
return -1;
|
||||
goto fail;
|
||||
|
||||
*log_level = tmp;
|
||||
printf("set log level %s,%lu\n",
|
||||
type, tmp);
|
||||
|
||||
if (type == NULL) {
|
||||
conf->log_level = tmp;
|
||||
rte_set_log_level(tmp);
|
||||
} else if (rte_log_set_level_regexp(type, tmp) < 0) {
|
||||
printf("cannot set log level %s,%lu\n",
|
||||
type, tmp);
|
||||
goto fail;
|
||||
}
|
||||
|
||||
free(str);
|
||||
return 0;
|
||||
|
||||
fail:
|
||||
free(str);
|
||||
return -1;
|
||||
}
|
||||
|
||||
static enum rte_proc_type_t
|
||||
@ -898,15 +926,12 @@ eal_parse_common_option(int opt, const char *optarg,
|
||||
break;
|
||||
|
||||
case OPT_LOG_LEVEL_NUM: {
|
||||
uint32_t log;
|
||||
|
||||
if (eal_parse_log_level(optarg, &log) < 0) {
|
||||
if (eal_parse_log_level(optarg, conf) < 0) {
|
||||
RTE_LOG(ERR, EAL,
|
||||
"invalid parameters for --"
|
||||
OPT_LOG_LEVEL "\n");
|
||||
return -1;
|
||||
}
|
||||
conf->log_level = log;
|
||||
break;
|
||||
}
|
||||
case OPT_LCORES_NUM:
|
||||
@ -1057,7 +1082,9 @@ eal_common_usage(void)
|
||||
" --"OPT_VMWARE_TSC_MAP" Use VMware TSC map instead of native RDTSC\n"
|
||||
" --"OPT_PROC_TYPE" Type of this process (primary|secondary|auto)\n"
|
||||
" --"OPT_SYSLOG" Set syslog facility\n"
|
||||
" --"OPT_LOG_LEVEL" Set default log level\n"
|
||||
" --"OPT_LOG_LEVEL"=<int> Set global log level\n"
|
||||
" --"OPT_LOG_LEVEL"=<type-regexp>,<int>\n"
|
||||
" Set specific log level\n"
|
||||
" -v Display version information on startup\n"
|
||||
" -h, --help This help\n"
|
||||
"\nEAL options for DEBUG use only:\n"
|
||||
|
@ -776,10 +776,8 @@ rte_eal_init(int argc, char **argv)
|
||||
|
||||
thread_id = pthread_self();
|
||||
|
||||
eal_log_level_parse(argc, argv);
|
||||
|
||||
/* set log level as early as possible */
|
||||
rte_set_log_level(internal_config.log_level);
|
||||
eal_log_level_parse(argc, argv);
|
||||
|
||||
if (rte_eal_cpu_init() < 0) {
|
||||
rte_eal_init_alert("Cannot detect lcores.");
|
||||
|
Loading…
x
Reference in New Issue
Block a user