mirror of
https://github.com/tstack/lnav.git
synced 2024-10-05 17:17:37 +03:00
[logfile] fix issue when files have headers
Defect Number: Reviewed By: Testing Done:
This commit is contained in:
parent
3c85936999
commit
6cf5cc8213
@ -146,7 +146,8 @@ bool log_format::next_format(pcre_format *fmt, int &index, int &locked_index)
|
||||
return retval;
|
||||
}
|
||||
|
||||
const char *log_format::log_scanf(const char *line,
|
||||
const char *log_format::log_scanf(uint32_t line_number,
|
||||
const char *line,
|
||||
size_t len,
|
||||
pcre_format *fmt,
|
||||
const char *time_fmt[],
|
||||
@ -184,7 +185,15 @@ const char *log_format::log_scanf(const char *line,
|
||||
|
||||
if (retval) {
|
||||
if (curr_fmt != pat_index) {
|
||||
this->lf_pattern_locks.emplace_back(0, curr_fmt);
|
||||
uint32_t lock_line;
|
||||
|
||||
if (this->lf_pattern_locks.empty()) {
|
||||
lock_line = 0;
|
||||
} else {
|
||||
lock_line = line_number;
|
||||
}
|
||||
|
||||
this->lf_pattern_locks.emplace_back(lock_line, curr_fmt);
|
||||
}
|
||||
this->lf_timestamp_flags = tm_out->et_flags;
|
||||
done = true;
|
||||
@ -672,8 +681,15 @@ log_format::scan_result_t external_log_format::scan(nonstd::optional<logfile *>
|
||||
dst.emplace_back(offset, log_tv, level, mod_index, opid);
|
||||
|
||||
if (orig_lock != curr_fmt) {
|
||||
uint32_t lock_line;
|
||||
|
||||
log_debug("changing pattern lock %d -> %d", orig_lock, curr_fmt);
|
||||
this->lf_pattern_locks.emplace_back(dst.size() - 1, curr_fmt);
|
||||
if (this->lf_pattern_locks.empty()) {
|
||||
lock_line = 0;
|
||||
} else {
|
||||
lock_line = dst.size() - 1;
|
||||
}
|
||||
this->lf_pattern_locks.emplace_back(lock_line, curr_fmt);
|
||||
}
|
||||
return log_format::SCAN_MATCH;
|
||||
}
|
||||
|
@ -830,7 +830,8 @@ protected:
|
||||
|
||||
static bool next_format(pcre_format *fmt, int &index, int &locked_index);
|
||||
|
||||
const char *log_scanf(const char *line,
|
||||
const char *log_scanf(uint32_t line_number,
|
||||
const char *line,
|
||||
size_t len,
|
||||
pcre_format *fmt,
|
||||
const char *time_fmt[],
|
||||
|
@ -148,6 +148,7 @@ class generic_log_format : public log_format {
|
||||
const char *last_pos;
|
||||
|
||||
if ((last_pos = this->log_scanf(
|
||||
dst.size(),
|
||||
sbr.get_data(),
|
||||
sbr.length(),
|
||||
get_pcre_log_formats(),
|
||||
|
@ -227,6 +227,7 @@ dist_noinst_DATA = \
|
||||
logfile_generic.0 \
|
||||
logfile_generic.1 \
|
||||
logfile_generic.2 \
|
||||
logfile_generic_with_header.0 \
|
||||
logfile_glog.0 \
|
||||
logfile_haproxy.0 \
|
||||
logfile_journald.json \
|
||||
@ -247,6 +248,7 @@ dist_noinst_DATA = \
|
||||
logfile_syslog.2 \
|
||||
logfile_syslog_fr.0 \
|
||||
logfile_syslog_with_access_log.0 \
|
||||
logfile_syslog_with_header.0 \
|
||||
logfile_syslog_with_mixed_times.0 \
|
||||
logfile_tai64n.0 \
|
||||
logfile_tcf.0 \
|
||||
|
4
test/logfile_generic_with_header.0
Normal file
4
test/logfile_generic_with_header.0
Normal file
@ -0,0 +1,4 @@
|
||||
Header1: abc
|
||||
Header2: def
|
||||
2012-07-02 10:22:40,672:DEBUG:foo bar baz
|
||||
2014-10-08 16:56:38,344:WARN:foo bar baz
|
6
test/logfile_syslog_with_header.0
Normal file
6
test/logfile_syslog_with_header.0
Normal file
@ -0,0 +1,6 @@
|
||||
Header1: abc
|
||||
Header2: def
|
||||
Nov 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
|
||||
Nov 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt
|
||||
Nov 3 09:23:38 veridian automount[7999]: lookup(file): lookup for opt failed
|
||||
Nov 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
|
@ -378,6 +378,28 @@ count(*)
|
||||
17
|
||||
EOF
|
||||
|
||||
run_test ${lnav_test} -n \
|
||||
${srcdir}/logfile_syslog_with_header.0
|
||||
|
||||
check_output "multi-pattern logs don't work?" <<EOF
|
||||
Header1: abc
|
||||
Header2: def
|
||||
Nov 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed
|
||||
Nov 3 09:23:38 veridian automount[16442]: attempting to mount entry /auto/opt
|
||||
Nov 3 09:23:38 veridian automount[7999]: lookup(file): lookup for opt failed
|
||||
Nov 3 09:47:02 veridian sudo: timstack : TTY=pts/6 ; PWD=/auto/wstimstack/rpms/lbuild/test ; USER=root ; COMMAND=/usr/bin/tail /var/log/messages
|
||||
EOF
|
||||
|
||||
run_test ${lnav_test} -n \
|
||||
${srcdir}/logfile_generic_with_header.0
|
||||
|
||||
check_output "multi-pattern logs don't work?" <<EOF
|
||||
Header1: abc
|
||||
Header2: def
|
||||
2012-07-02 10:22:40,672:DEBUG:foo bar baz
|
||||
2014-10-08 16:56:38,344:WARN:foo bar baz
|
||||
EOF
|
||||
|
||||
# XXX get this working...
|
||||
# run_test ${lnav_test} -n -I ${test_dir} <(cat ${srcdir}/logfile_access_log.0)
|
||||
#
|
||||
|
Loading…
Reference in New Issue
Block a user