diff --git a/src/log_format.cc b/src/log_format.cc index dd1f6a22..7d6008ab 100644 --- a/src/log_format.cc +++ b/src/log_format.cc @@ -308,7 +308,7 @@ void log_format::check_for_new_year(std::vector &dst, exttm etm, if (diff <= 0) { return; } - if (diff > (60 * 24 * 60 * 60)) { + if ((etm.et_flags & ETF_MONTH_SET) && diff >= (24 * 60 * 60)) { off_year = 1; } else if (diff >= (24 * 60 * 60)) { off_month = 1; diff --git a/src/logfile.cc b/src/logfile.cc index e2b5ede6..ffa319e8 100644 --- a/src/logfile.cc +++ b/src/logfile.cc @@ -149,9 +149,11 @@ bool logfile::process_prefix(off_t offset, shared_buffer_ref &sbr) { log_format::scan_result_t found = log_format::SCAN_NO_MATCH; size_t prescan_size = this->lf_index.size(); + time_t prescan_time = 0; bool retval = false; if (this->lf_format.get() != NULL) { + prescan_time = this->lf_index[0].get_time(); /* We've locked onto a format, just use that scanner. */ found = this->lf_format->scan(this, this->lf_index, offset, sbr); } @@ -208,6 +210,9 @@ bool logfile::process_prefix(off_t offset, shared_buffer_ref &sbr) switch (found) { case log_format::SCAN_MATCH: + if (!this->lf_index.empty() && prescan_time != this->lf_index[0].get_time()) { + retval = true; + } if (prescan_size > 0 && prescan_size < this->lf_index.size()) { logline &second_to_last = this->lf_index[prescan_size - 1]; logline &latest = this->lf_index[prescan_size]; diff --git a/test/Makefile.am b/test/Makefile.am index 47b51ff7..a28efefa 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -133,13 +133,13 @@ drive_grep_proc_SOURCES = drive_grep_proc.cc drive_grep_proc_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz drive_json_op_SOURCES = drive_json_op.cc -drive_json_op_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz +drive_json_op_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz $(CURSES_LIB) drive_json_ptr_walk_SOURCES = drive_json_ptr_walk.cc -drive_json_ptr_walk_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz +drive_json_ptr_walk_LDADD = ../src/libdiag.a $(PCRE_LIBS) -lz $(CURSES_LIB) drive_listview_SOURCES = drive_listview.cc -drive_listview_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz \ +drive_listview_LDADD = ../src/libdiag.a $(CURSES_LIB) -lz $(CURSES_LIB) \ $(CONFIG_OBJS) drive_logfile_SOURCES = drive_logfile.cc diff --git a/test/logfile_rollover.1 b/test/logfile_rollover.1 new file mode 100644 index 00000000..2a54342d --- /dev/null +++ b/test/logfile_rollover.1 @@ -0,0 +1,5 @@ +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 +Feb 3 09:23:38 veridian automount[7998]: lookup(file): lookup for foobar failed diff --git a/test/test_cmds.sh b/test/test_cmds.sh index 27d40be8..01491a4a 100644 --- a/test/test_cmds.sh +++ b/test/test_cmds.sh @@ -721,6 +721,23 @@ check_output "histogram is not working?" <> logfile_rollover.1" \ + -c ":rebuild" \ + -c ":switch-to-view histogram" \ + logfile_rollover.1 + +check_output "rollover is not working with histogram" <