<img src="https://github.com/Lifailon/lazyjournal/raw/0.8.6/img/logo.png">
<a href="https://github.com/Lifailon/lazyjournal/releases"><img title="GitHub Download" src="https://img.shields.io/github/downloads/lifailon/lazyjournal/total?logo=github&color=green&label=Downloads"></a>
<a href="https://launchpad.net/~lifailon/+archive/ubuntu/lazyjournal"><img title="Ubuntu Launchpad PPA" src="https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fapi.launchpad.net%2F1.0%2F~lifailon%2F%2Barchive%2Fubuntu%2Flazyjournal%3Fws.op%3DgetPublishedSources%26distro_series%3Dhttps%3A%2F%2Fapi.launchpad.net%2F1.0%2Fubuntu%2Fjammy%26status%3DPublished&query=entries[0].source_package_version&label=Ubuntu+PPA&logo=ubuntu&color=orange"></a>
<a href="https://formulae.brew.sh/formula/lazyjournal"><img title="Homebrew" src="https://img.shields.io/homebrew/v/lazyjournal?logo=homebrew&color=yellow&label=Homebrew"></a>
<a href="https://anaconda.org/conda-forge/lazyjournal"><img title="Conda Forge" src="https://img.shields.io/conda/vn/conda-forge/lazyjournal?logo=anaconda&color=green&label=Conda"></a>
<a href="https://aur.archlinux.org/packages/lazyjournal"><img title="Arch Linux" src="https://img.shields.io/aur/version/lazyjournal?logo=arch-linux&color=blue&label=AUR"></a>
<a href="https://hub.docker.com/r/lifailon/lazyjournal"><img title="Docker Hub" src="https://img.shields.io/docker/image-size/lifailon/lazyjournal/latest?logo=docker&color=blue&label=Docker+Hub"></a>
<a href="https://github.com/Lifailon/lazyjournal/actions/workflows/build.yml"><img title="Actions Build"src="https://github.com/Lifailon/lazyjournal/actions/workflows/build.yml/badge.svg"></a>
<a href="https://github.com/Lifailon/lazyjournal/wiki"><img title="Go coverage report"src="https://raw.githubusercontent.com/wiki/Lifailon/lazyjournal/coverage.svg"></a>
<a href="https://goreportcard.com/report/github.com/Lifailon/lazyjournal"><img src="https://goreportcard.com/badge/github.com/Lifailon/lazyjournal" alt="Go Report"></a>
<a href="https://app.fossa.com/projects/git%2Bgithub.com%2FLifailon%2Flazyjournal?ref=badge_shield&issueType=security" alt="FOSSA Status"><img src="https://app.fossa.com/api/projects/git%2Bgithub.com%2FLifailon%2Flazyjournal.svg?type=shield&issueType=security"/></a>
<a href="https://github.com/avelino/awesome-go?tab=readme-ov-file#logging"><img src="https://awesome.re/mentioned-badge.svg" alt="Mentioned in Awesome Go"></a>
<a href="https://pkg.go.dev/github.com/Lifailon/lazyjournal"><img src="https://pkg.go.dev/badge/github.com/Lifailon/lazyjournal.svg" alt="Go Reference"></a>
<a href="https://deepwiki.com/Lifailon/lazyjournal"><img src="https://deepwiki.com/badge.svg" alt="Ask DeepWiki"></a>
Terminal user interface for viewing logs from journald, auditd, file system, Docker and Podman containers, Compose stacks and Kubernetes pods with support for log highlighting and several filtering modes. Written in Go with the awesome-gocui (fork gocui) library.
This tool is inspired by and made with love for LazyDocker and LazyGit. It is also included in Awesome-Go, Awesome-TUIs and Awesome-Docker, check out other useful projects on the repository pages.
[!NOTE] You can try it out on the Killercoda playground.

tail).systemd to access their logs.journalctl (tool for reading logs from journald).auditd for filtering by keys and viewing in interpret format.Apache or Nginx, as well as syslog, messages, etc. from /var/log.gz, xz and bz2 formats) and Packet Capture (pcap format).asl format).PowerShell and wevtutil, as well as application logs from Windows file system.kubeconfig).ssh protocol.Supports 4 filtering modes:
fzf) - custom inexact case-insensitive search (searches for all phrases separated by a space anywhere on a line).grep) - search with regular expression support, based on the built-in regexp library, case-insensitive by default (in case a regular expression syntax error occurs, the input field will be highlighted in red).since and/or until) for journald logs, as well as Docker or Podman containers (only supported in streaming mode) using the left and right arrow keys. This mode can be used in combination with other filtering modes and can improve loading performance for large logs. Changing the UTC offset is supported using the -T/--timezone-filter flag or the timezoneFilter configuration parameter (default: +00:00).Several log output coloring modes are supported:
When using external tools, they are required to be already installed on your system. You can also disable output highlighting with the Ctrl+Q keyboard shortcut, this is useful for improving performance when viewing large logs or if your terminal already has a built-in highlighting feature, such as WindTerm.
The built-in highlighting by default supports several color groups:
A full list of all keywords can be found in the color.log file (used for testing only).
[!IMPORTANT] If you have suggestions for improving log highlighting (e.g. adding new keywords), you can open an issue for a new feature.
Binaries are available for download on the GitHub releases page.
Run the command in the console to quickly install or update the stable version for Linux, macOS or the BSD-based system:
curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.sh | bash
This command will run a script that will download the latest binary (auto-detect OS and arch) from the GitHub repository to your home directory along with other executables (default path is ~/.local/bin/lazyjournal) and configurations (~/.config/lazyjournal/config.yml) for the current user, and also grant execute permission.
To install and remove packages on an Ubuntu system, you can use the apt package manager from the PPA repository:
sudo add-apt-repository -y ppa:lifailon/lazyjournal
sudo apt update
sudo apt install -y lazyjournal
Or download the deb package from the GitHub releases page for installation on any Debian-based system.
curl -sSL https://github.com/Lifailon/lazyjournal/releases/download/0.8.6/lazyjournal-0.8.6-$(dpkg --print-architecture).deb -o /tmp/lazyjournal.deb
sudo apt install -y /tmp/lazyjournal.deb && rm /tmp/lazyjournal.deb
Use the following command to install lazyjournal using Homebrew:
brew install lazyjournal
If you use package managers like conda or mamba, you can install lazyjournal from conda-forge:
conda install -c conda-forge lazyjournal
mamba install -c conda-forge lazyjournal
You can install lazyjournal user-globally using pixi:
pixi global install lazyjournal
If you are an Arch Linux user, you can also install from the AUR:
paru -S lazyjournal
Download the docker-compose file and run the container using the image from Docker Hub:
mkdir lazyjournal && cd lazyjournal
curl -sSL https://raw.githubusercontent.com/Lifailon/lazyjournal/refs/heads/main/docker/debian/docker-compose.yml -o docker-compose.yml
docker compose up -d
docker attach lazyjournal
The image comes pre-installed with the packages required for the application to run. Read-only access rights are pre-configured in the compose file to support all log sources from the host system.
To access Kubernetes logs, you need to forward the configuration to the container. If you're using a local cluster (e.g. k3s), change the cluster server address in the configuration to the host address on the local network.
The container comes pre-configured with a ttyd. To manage the interface via a web browser, edit the following variables:
# Enable Web mode
TTYD=true
PORT=5555
# Credentials for accessing via Web browser (optional)
USERNAME=admin
PASSWORD=admin
# Flags used (optional)
OPTIONS=-t 5000 -u 2
Use the following command to quickly install in your PowerShell console:
irm https://raw.githubusercontent.com/Lifailon/lazyjournal/main/scripts/install.ps1 | iex
The following directories are used to search for logs in the file system:
Program FilesProgram Files (x86)ProgramDataAppData\Local and AppData\Roaming for current userTo read logs, automatic detection of the following encodings is supported:
UTF-8UTF-16 with BOMUTF-16 without BOMWindows-1251 by defaultYou can install it as a package using Go (this will install the version from the latest commit, which may be unstable):
go install github.com/Lifailon/lazyjournal@latest
You can start the interface from anywhere: lazyjournal or use lazyjournal -h for help on available flags.
The application is an interface for viewing logs with the ability to filter them for analysis. Therefore, to access the logs themselves, it is necessary that such programs as docker-cli, docker-compose, podman and kubectl are already installed on your system. To write executed commands to a log file, use the -l/--logging flag when starting the application.
Access to all system logs and containers may require elevated privileges for the current user. For example, if a user does not have read permission to the directory /var/lib/docker/containers, they will not be able to access all archived logs from the moment the container is started, but only from the moment the containerization system is started, so the process of reading logs is different. However, reading in streaming mode is faster than parsing json logs from the file system.
Hotkeys, interface settings and application flag values can be overridden using the config file (see #23, #27 and #37 issues), which can be located in ~/.config/lazyjournal/config.yml, as well as next to the executable file or in th
$ claude mcp add lazyjournal \
-- python -m otcore.mcp_server <graph>