logserver(1)

πŸ“¦ version 1.13.2, in ubuntu stonking

logserver β€” the manual page, section 1, and yes bestie we're reading it together πŸ’–

hi hello, this is logserver(1) β€” the 1 means it's a user command, the kind you just run in your terminal like a normal person. Except it's not normal. It's so much better than normal.


NAME 🌸

logserver β€” a fast pager designed for rapid navigation and multiple keyword searching on giant log files. It's giving less but make it ✨serve✨.


SYNOPSIS πŸŽ€

logserver [inputfile]

DESCRIPTION πŸ¦‹

okay so. logserver is an ncurses pager that streams a file and makes searching and navigating it, like, genuinely easy. It was designed to help you explore and search log files when you don't exactly know what you're looking for β€” which is so real, because who ever knows.

It starts you off in command mode and everything runs on keybindings. Some keybindings flip you into input mode, where your keys get accepted as input until you hit enter (accept) or escape (reject) to come back to command mode.

The centre line is highlighted and that's your current line β€” the one you're looking at right now. So any command that operates "on a line"? Yeah. It's operating on that highlighted one. Periodt.


KEYBINDINGS FOR NAVIGATION πŸ’…

  • arrows β€” move around in the file. Long lines do not wrap, so left and right move you accordingly.
  • home β€” move to the top of the file.
  • end β€” move to one-past the end of the file, which is where streaming data shows up πŸ‘€
  • shift+home β€” move left to the start of the line.
  • shift+end β€” move right to the end of the line.
  • page-up β€” move to the top line visible.
  • page-down β€” move to the bottom line visible.
  • colon (:) β€” accepts a number afterwards, and moves to that line number. gorpcore for jumping, honestly.

KEYBINDINGS FOR SEARCHING πŸ”

  • slash (/) β€” accepts a keyword afterwards and adds it as a search term.
  • backslash (\) β€” accepts a keyword afterwards and adds it as a reverse search.
  • caret (^) β€” accepts a keyword afterwards and adds it as a starts with search.
  • dollar sign ($) β€” accepts a keyword afterwards and adds it as an ends with search.
  • tab β€” alternates among search modes. ALL mode shows all lines and highlights matching keywords. OR mode (disjunctive) shows lines that match any keyword. AND mode (conjunctive) shows lines that match all keywords. The trio ate, no notes.
  • shift+left β€” move left on the current line to the next matching keyword.
  • shift+right β€” move right on the current line to the next matching keyword.
  • shift+up β€” in ALL mode, moves up to the next line that matches any keyword. In OR mode, moves up to the next line that matches a keyword that is not matched on the current line. Useful for staying in OR mode but skipping large amounts of the same match. lowkey genius.
  • shift+down β€” same as shift+up but searches downwards. ⬇️
  • backspace β€” removes the most-recently added search term. undo queen.
  • plus (+) β€” add one more line of context around matching lines.
  • minus (-) β€” remove one line of context around matching lines.

KEYBINDINGS FOR LINE OPERATIONS 🫢

  • octothorpe (#) β€” accepts a string afterwards, and adds the current line and surrounding view along with that comment to a file in the current directory called storytime.txt. yes. storytime. bestie named it that himself and we respect it.
  • letter e β€” accepts a string starting with the current line. Changes to that line are reflected in the display (but not the original file). we're editing the vibe, not the source of truth.
  • letter b β€” breaks a long line up and inserts the new lines. This uses a number of heuristics in an attempt to be elegant. It uses spaces and punctuation to give a ragged-right in text. It uses ampersands and equals to infer HTTP query strings and breaks on the ampersand. It uses quotes and braces to infer JSON for pretty printing, and it uses periodic backslash-n to infer escape newlines and breaks on those.
  • letter B β€” accepts a single character next, and performs the break functionality described for the letter b using that specific character, i.e., replaces that character with newlines.
  • letter i β€” intelligence for lines. Replaces UNIX timestamps with human time, and looks for sequences of base64 or base16 encoded text based on printable characters after decoding. Repeated pressing of i softens the heuristics of how much text needs to be printable.
  • letter d β€” if hit twice in a row, deletes the current line from the display (not from the original file). double tap to yeet πŸ—‘οΈ
  • asterisk (*) β€” pins the current line. When searching for keywords, pinned lines will appear in OR and AND mode despite not matching.
  • letter s β€” accepts a string afterwards, and writes the current line to the file specified by that string.
  • letter f β€” follows a link on the current line. If logserver is given the output of grep -rn, then each line will link to that file and line number and f will follow it. If logserver is reading a ctags file, then each line will be a link to that target.
  • letter m β€” merge the next line to the end of the current line.

KEYBINDINGS FOR GLOBAL OPERATIONS AND STACKED VIEWS πŸ‘‘

  • letter q β€” quits logserver. bye bestie 😭
  • letter n β€” toggle line numbers on and off.
  • letter c β€” toggle colouring on and off.
  • letter S β€” accepts a string afterwards, and writes the entire log file to the file specified by that string. This is useful when data is being streamed into logserver by program output.
  • letter h β€” launch the help screen, pushes on the stack.
  • letter C β€” clears the entire contents of the log. This is useful when streaming in data, e.g., a device log, and you want the logs relevant to a particular event that is about to be triggered. fresh slate, clean vibes.
  • exclamation (!) β€” inserts a new pinned dash line at the current position. Appends it if the current line is one-past the end. Useful for separating segments of the log, such as the debug log corresponding to right before pressing a button and right after the program crashes, so just the area between those events is conspicuous. forensic girlies rise.
  • percent (%) β€” in OR and AND mode, applies the current filter and creates a new view with just the matching lines and puts that on the stack (i.e., some percent of the logs). In ALL mode, goes up and down from the current position searching for a pinned line, such as one created by an exclamation, and pushes a new view on the stack bounded by those (or the top and bottom if none are found).
  • less-than (<) β€” moves left on the stack of views. greater-than (>) β€” moves right on the stack of views.
  • escape β€” pops the top most (right most) view on the stack. Does nothing if there is only one view.
  • pipe (|) β€” accepts a string afterwards and runs that command, passing the current view as stdin, and pushing a new view on the stack with the stdout of the command as its contents. For security purposes the set of commands that can be run is limited to the following: cat, sort, uniq, ls, grep, cut, tr, sed, awk, fgrep, which, whoami, base64, echo, file, wc, xsel, mplayer.
  • letter T β€” consider the next key pressed as the tab character, so T-comma can be for CSVs. πŸ“
  • letter t β€” toggle tab mode, where tab character and column widths are used to align tabular data.
  • numbers 0-9 β€” in tab mode, toggle suppression of column number. Columns are indexed starting at 1, with number ten as 0.

EXAMPLES 🌈

Try this command to view the system log in logserver:

$ journalctl | logserver
$ logserver /var/log/apache2/access.log

SEE ALSO ⭐

less(1), more(1)


Copyright (C) 2017-2025 Joel Reardon

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. See the file LICENSE. If not, see https://www.gnu.org/licenses/.

fr fr read the license, it's not a vibe check you can skip πŸ’€

AUTHOR πŸ’œ

Joel Reardon logserver@potatocrunchcereal.com


and that's the whole page bestie!! πŸŽ€ this was logserver(1) from the manual, and the page itself is dated 31 December 2025 β€” last updated on that day, signed off as logserver(1). mwah, go read your logs πŸ’‹βœ¨

πŸ“¦ where this page comes from