Skip to content


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Comfortable examination of multiple parallel logfiles.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.


This is a mirror of

Many applications produce multiple log files; there may be one per component
or one production log and a separate debug log, or one from the server daemon
and one from the client application. During analysis, one may need to step
through them in tandem, when one provides details that the other doesn't.
Doing this manually in split windows is tedious; 'scrollbind' usually doesn't
help because different amounts of log lines are written to each file.

As long as each log file provides a timestamp or similar monotonically
increasing field, this plugin automatically syncs the cursor movement in one
log window to all other windows. When moving to another line in the current
window, all log lines that fall in the time range covered by the movement are
highlighted automatically.

An example screenshot can be found at

The plugin is either activated automatically for the 'filetype' values in
g:LogViewer_Filetypes, or it can be manually activated for any buffer with
the :LogViewerEnable command.
With the default automatic syncing, any log buffer will automatically set up
the corresponding autocommands; without it, you need to kick off syncing in
one buffer via :LogViewerMaster. The current line in the current buffer will
be highlighted and marked with the "T" (for target) sign:
T 2012-08-01 10:01:22.342

When you move to another line, the plugin will mark the synced move in other
buffers to an adjacent line like this:
  2012-08-01 10:01:22.342
> 2012-08-01 10:01:23.234
When the timespan in the current buffer covers multiple log lines in another
buffer, the start of the range is marked with "-" and the end of the range
with "V" (downward move) / "^" (upward move):
  2012-08-01 10:01:22.342
- 2012-08-01 10:01:23.234
  2012-08-01 10:01:23.250
V 2012-08-01 10:01:26.012

:LogViewerEnable        Consider the current buffer as a log (even though its
                        'filetype' does not automatically make it one).

:LogViewerDisable       Exclude the current buffer from the log syncing; any
                        signs and automatic updates are removed from it.

:LogViewerMaster        Designate the current buffer as the log master. Only
                        cursor movements in this buffer will sync to other
                        buffers; movements in other buffers won't affect the
                        markers any more.

:LogViewerUpdate CursorMoved | CursorHold | Manual
                        Set the trigger for the syncing to the passed event.
                        By default, each cursor movement will immediately
                        update all other log buffers. With CursorHold, this
                        will only happen after 'updatetime'. With Manual, it
                        has to be explicitly triggered with

:LogViewerTarget        Set the target log line (the basis for the
                        highlighting in all other log buffers) to the current
                        line in the current buffer.
:[count]LogViewerTarget Set the target log line to [count] timestamps down
                        from the current target timestamp.
:LogViewerTarget {timestamp}
                        Set the target log line to the first timestamp that
                        matches {timestamp}. Useful to proceed to the
                        beginning of a date when interesting things have
Something went wrong with that request. Please try again.