[loader] the loader was not converting the level name to the enum value correctly

Closes #329
pull/334/head
Timothy Stack 8 years ago
parent 2f0d645a26
commit 8dbf018814

@ -99,7 +99,7 @@ logline::level_t logline::string2level(const char *levelstr, ssize_t len, bool e
}
if (((len == 1) || ((len > 1) && (levelstr[1] == ' '))) &&
(retval = abbrev2level(levelstr, len)) != LEVEL_UNKNOWN) {
(retval = abbrev2level(levelstr, 1)) != LEVEL_UNKNOWN) {
return retval;
}
@ -107,7 +107,7 @@ logline::level_t logline::string2level(const char *levelstr, ssize_t len, bool e
pcre_context_static<10> pc;
if (LEVEL_RE.match(pc, pi)) {
retval = abbrev2level(pi.get_substr_start(pc.begin()), 1);
retval = abbrev2level(pi.get_substr_start(pc.begin()), len);
}
return retval;

@ -192,7 +192,6 @@ static int read_levels(yajlpp_parse_context *ypc, const unsigned char *str, size
string regex = string((const char *)str, len);
string level_name_or_number = ypc->get_path_fragment(2);
logline::level_t level = logline::string2level(level_name_or_number.c_str());
elf->elf_level_patterns[level].lp_regex = regex;
return 1;

@ -274,6 +274,7 @@ dist_noinst_DATA = \
logfile_glog.0 \
logfile_json.json \
logfile_json2.json \
logfile_leveltest.0 \
logfile_multiline.0 \
logfile_nested_json.json \
logfile_openam.0 \
@ -306,6 +307,7 @@ dist_noinst_DATA = \
vt52_curses_output.0 \
vt52_curses_output.1 \
formats/collision/format.json \
formats/customlevel/format.json \
formats/jsontest/format.json \
formats/jsontest2/format.json \
formats/nestedjson/format.json \

@ -0,0 +1,24 @@
{
"leveltest_log": {
"description": "Log format used for testing levels",
"regex": {
"line": {
"pattern": "^(?<timestamp>\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}) (?<level>[^ ]+) (?<body>.*)$"
}
},
"level": {
"trace": "trace",
"debug": "debug",
"debug2": "debug2",
"debug3": "debug3",
"info": "info",
"warning": "warn",
"fatal": "fatal"
},
"sample": [
{
"line": "2016-06-30 12:00:01 trace tracemessage"
}
]
}
}

@ -0,0 +1,8 @@
2016-06-30 12:00:01 trace tracemessage
2016-06-30 12:00:02 debug debugmessage
2016-06-30 12:00:03 debug2 debug2message
2016-06-30 12:00:04 debug3 debug3message
2016-06-30 12:00:05 info infomessage
2016-06-30 12:00:06 warn warnmessage
2016-06-30 12:00:07 fatal fatalmessage
2016-06-30 12:00:08 invalid invalidmessage

@ -20,3 +20,21 @@ error: against pattern -- ^(?<timestamp>\d+): (?<body>.*)$
error:no_sample_log:no sample logs provided, all formats must have samples
error:init.sql:2:near "TALE": syntax error
EOF
run_test ${lnav_test} -n \
-I ${test_dir} \
-c ";select * from leveltest_log" \
-c ':write-csv-to -' \
${test_dir}/logfile_leveltest.0
check_output "levels are not correct?" <<EOF
log_line,log_part,log_time,log_idle_msecs,log_level,log_mark
0,<NULL>,2016-06-30 12:00:01.000,0,trace,0
1,<NULL>,2016-06-30 12:00:02.000,1000,debug,0
2,<NULL>,2016-06-30 12:00:03.000,1000,debug2,0
3,<NULL>,2016-06-30 12:00:04.000,1000,debug3,0
4,<NULL>,2016-06-30 12:00:05.000,1000,info,0
5,<NULL>,2016-06-30 12:00:06.000,1000,warning,0
6,<NULL>,2016-06-30 12:00:07.000,1000,fatal,0
7,<NULL>,2016-06-30 12:00:08.000,1000,info,0
EOF

Loading…
Cancel
Save