Skip to main content

cutelog2

PyPI Python versions CI License

cutelog2 is a PyQt6/PySide6 fork of cutelog by Alexander Bus, a graphical log viewer for Python’s standard logging module. It’s unaffiliated with the original project; see the migration PR for what changed and why. It can be targeted with a SocketHandler with no additional setup (see Usage). cutelog2 is cross-platform, although it’s mainly written and optimized for Linux.

Features

  • Allows any number of simultaneous connections

  • Customizable look of log levels and columns, with presets for each

  • Filtering based on level and namespace, as well as filtering by searching

  • Search through all records or only through filtered ones

  • Display extra fields under the message with Extra mode

  • View exception tracebacks or messages in a separate window

  • Dark theme (with its own set of colors for levels)

  • Pop tabs out of the window, merge records of multiple tabs into one

  • Save/load records to/from a file in JSON format

Installation

If you’re using Linux, install PySide6 (or PyQt6) from your package manager before installing cutelog2 (package name is probably python3-pyside6 or python-pyside6). Or just run pip install pyside6 to install it from pip, which is sub-optimal.

$ pip install --upgrade cutelog2

Or install the latest development version from the source:

$ pip install git+https://github.com/eachimei/cutelog2.git

Choosing a Qt binding

cutelog2 runs on either PySide6 or PyQt6, and both are covered by CI. PySide6 is installed by default because it is LGPLv3, so it places no licensing obligation on you; PyQt6 is GPLv3 or commercial.

To use PyQt6 instead:

$ pip install cutelog2[pyqt6]

If both are installed, cutelog2 prefers PySide6. Override with the QT_API environment variable, which accepts pyside6 or pyqt6:

$ QT_API=pyqt6 cutelog2

Requirements

  • Python 3.10 (or newer)

  • PySide6 or PyQt6

  • QtPy

Usage

  1. Start cutelog2

  2. Put the following into your code:

import logging
from logging.handlers import SocketHandler

log = logging.getLogger('Root logger')
log.setLevel(1)  # to send all messages to cutelog
socket_handler = SocketHandler('127.0.0.1', 19996)  # default listening address
log.addHandler(socket_handler)
log.info('Hello world!')

Afterwards it’s recommended to designate different loggers for different parts of your program with log_2 = log.getChild(“Child logger”). This will create “log namespaces” which allow you to filter out messages from various subsystems of your program.

The server listens on 127.0.0.1 only. To accept records from other machines, set “Server listen address” in Settings to 0.0.0.0; anyone who can connect can then send records, so only do this on a trusted network. Pickled records are decoded without importing any classes, so a client can’t run code in cutelog2; objects other than basic types show as <module.Class>.

Viewing saved records

Records saved with File → Save records (a JSON array, or concatenated JSON objects) can be opened from the command line. - reads them from standard input:

$ cutelog2 records.json
$ my_exporter | python -m cutelog2 --no-server --tab-name "nightly run" -
  • --no-server doesn’t start the listener, so a viewer doesn’t conflict with a live instance on the same port. It can still be started from the Server menu.

  • --tab-name NAME names the tab instead of using the file name.

  • Loaded records open at the first record rather than scrolled to the end.

On Windows, the cutelog2 launcher has no console and so no standard input; use python -m cutelog2 - there.

Code, issues, changelog

Visit the project’s GitHub page.

Metadata

Release files for cutelog2 1.2.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for cutelog2 1.2.0
File Size Uploaded
cutelog2-1.2.0.tar.gz 137.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for cutelog2 1.2.0
File Interpreter ABI Platform
cutelog2-1.2.0-py3-none-any.whl Python 3 none any Details

Total release size: 257.5 kB

Release files / cutelog2-1.2.0.tar.gz

Download URL cutelog2-1.2.0.tar.gz
Size 137.8 kB
Tags Source
SHA-256 checksum
How to use checksums
91834f2cb76ec992073f0cd60e6060bb469fcf0e5868c78a37600aecb7a3cfbf
BLAKE2b-256 checksum
How to use checksums
d0c01f7c367a14f3b4a086dac8b1db37e3afcbe5a0ca35899da40b6f37d02566
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release files / cutelog2-1.2.0-py3-none-any.whl

Download URL cutelog2-1.2.0-py3-none-any.whl
Size 119.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5b8becfc7555f8b5098a4771181012c950e271fd34866e30f3141eed568322c8
BLAKE2b-256 checksum
How to use checksums
0b036827b244a3217b5184b40780360e1454396a8b4114edfddb5514fb00a9c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 24, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.0 This release

2 release files

1.1.1

2 release files

1.1.0

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page