Skip to content

TUI for journalctl, file system logs, as well Docker and Podman containers for quick viewing and filtering with fuzzy find, regex support (like fzf and grep) and coloring the output, written in Go with the gocui library.

License

Notifications You must be signed in to change notification settings

Lifailon/lazyjournal

Repository files navigation

Go Reference Go Report

Terminal user interface for journalctl, file system logs, as well Docker and Podman containers for quick viewing and filtering with fuzzy find, regex support (like fzf and grep) and coloring the output, written in Go with the awesome-gocui (fork gocui) library.

This tool is inspired by and with love for LazyDocker and LazyGit, as well as is listed as Awesome-TUIs, check out the other useful projects in the repository page.

interface

Functional

  • Simple installation, to run it, just download a single executable file without dependencies.
  • List of all units (services, sockets, etc.) via systemctl with current running status.
  • View all system and user journals via journalctl (tool for reading logs from systemd-journald).
  • List of all system boots for kernel log output.
  • File system logs (example, for Apache or Nginx), as well as syslog or messages, dmesg (kernel), etc.
  • List of all log files of descriptors used by processes, as well as all log files in the home directories of users.
  • Reading archived logs (gz, xz or bz2 format) and packet capture files (pcap format).
  • Docker containers, Podman pods and Swarm services logs.
  • Displays the currently selected log and filters output in real-time.

Supports 3 filtering modes:

  • Default - case sensitive exact search.
  • Fuzzy - custom inexact case-insensitive search (searches for all phrases separated by a space anywhere on a line).
  • Regex - search with regular expression support (based on regexp library), case insensitive by default (in case a regular expression syntax error occurs, the input field will be highlighted in red).

Supported coloring groups for output:

  • Green - keywords indicating success.
  • Red - keywords indicating an error.
  • Blue - statuses, (info, debug, etc), actions (install, update, etc) and HTTP methods (GET, POST, etc).
  • Light Blue - numbers (date, time, bytes, ip and mac-addresses).
  • Yellow - known names (host name and system users) and warnings.
  • Purple - url and full paths in the file system.
  • Custom - unix processes.

Roadmap

This is a backlog in addition to the functions described above.

  • Syntax coloring for logging output (like tailspin).
  • File system support for MacOS (darwin system) and the RHEL based systems.
  • File system support for BSD based systems.
  • File system support for Windows.
  • Code coverage by tests and passing all linters.
  • Interface for scrolling and the mouse support.
  • Windows events via PowerShell.
  • Support remote machines via ssh protocol.

Install

Binaries for all operating systems are available on the releases page.

Development is carried out on the Ubuntu Server 24.04.1 system and Windows 10. Also tested on the Raspberry Pi (aarch64 platform), MacOS Sequoia 15.2 (x64 platform), Ubuntu Server 20.04.6, OpenBSD 7.6, FreeBSD 14.2 and the WSL environment on the Oracle Linux 9.1.

Unix-based

Run the command in the console to quickly install or update the stable version for Linux, MacOS or the BSD-based system:

curl -sS https://raw.githubusercontent.com/Lifailon/lazyjournal/main/install.sh | bash

This command will run a script that will download the latest executable from the GitHub repository into your current user's home directory along with other executables (or create a directory) and grant execution permission.

Arch Linux

If you an Arch Linux user you can also install from the AUR:

paru -S lazyjournal

Thank you Matteo Giordano for upload and update the package in AUR.

Windows

Use the following command to quickly install in your PowerShell console:

Invoke-RestMethod https://raw.githubusercontent.com/Lifailon/lazyjournal/main/install.ps1 | Invoke-Expression

Supports reading containers logs as well as searching for logs in the following directories:

  • Program Files
  • Program Files (x86)
  • AppData\Local for current user
  • AppData\Roamin for current user

To read logs, automatic detection of the following encodings is supported:

  • UTF-8
  • UTF-16 with BOM
  • UTF-16 without BOM
  • Windows-1251 by default

Go Package

You can also use Go for install the dev version (Go must be installed in the system):

go install github.com/Lifailon/lazyjournal@latest

Others

If you use other packag manager and want this package to be present there as well, open an issue or load it yourself and make Pull requests.

Usage

You can run the interface from anywhere:

lazyjournal                # Run interface
lazyjournal --help, -h     # Show help
lazyjournal --version, -v  # Show version

Access to all system logs and containers may require elevated privileges for the current user.

Build

Clone the repository and run the project:

git clone https://github.com/Lifailon/lazyjournal
cd lazyjournal
go run main.go

Check the source code on the linters using golangci-lint and build binaries for different platforms and systems:

bash build.sh

Hotkeys

  • Tab - switch between windows.
  • Shift+Tab - return to previous window.
  • Left/Right - switch between log lists in the selected window.
  • Enter - selection a journal from the list to display log.
  • Up/Down - move up or down through all journal lists and log output, as well as changing the filtering mode in the filter window.
  • <Shift/Alt>+<Up/Down> - quickly move up or down (every 10 or 500 lines) through all journal lists and log output.
  • Ctrl+R - refresh the current log manually and go to the bottom of the output.
  • Ctrl+<D/W> - clear text input field for filter to quickly update current log output without filtering.
  • Ctrl+C - exit.

Contributing

Any contribution is welcome. If you want to implement a feature or fix something, please open an issue first.

Alternatives

  • lnav - The Logfile Navigator is a log file viewer for the terminal.
  • Dozzle - is a small lightweight application with a web based interface to monitor Docker logs.

If you like using TUI tools, try multranslate for translating text in multiple translators simultaneously, with support for translation history and automatic language detection.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Copyright (C) 2024 Lifailon (Alex Kup)