Giter VIP home page Giter VIP logo

cutelog's Introduction

cutelog โ€“ GUI for Python's logging module

PyPi

This is a graphical log viewer for Python's standard logging module. It can be targeted with a SocketHandler with no additional setup (see Usage).

The program is in beta: it's lacking some features and may be unstable, but it works. cutelog is cross-platform, although it's mainly written and optimized for Linux.

This is my first released project, so the code is by no means stellar. Feedback and contributions are appreciated!

Features

  • Allows any number of simultaneous connections
  • Fully customizable look of log levels and columns
  • Filtering based on level and name of the logger, as well as filtering by searching
  • Search through all records or only through filtered ones
  • 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

Screenshots

Light theme Dark theme

Installation

If you're using Linux, install PyQt5 from your package manager before installing cutelog (package name is probably python3-pyqt5 or python-pyqt5). Or just run pip install pyqt5 to install it from pip, which is sub-optimal.

$ pip install cutelog

Or install the latest development version from the source:

$ pip install git+https://github.com/busimus/cutelog.git

Requirements

  • Python 3.5 (or newer)
  • PyQt5 (preferably 5.6 or newer)

Usage

  1. Start cutelog
  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.

Planned features

  • Presets for colors
  • Presets for the logger header (with option to add columns for extra data)
  • Modify how rows are arranged in the detail table (like the header dialog)
  • Fix double-search on the last matched result (or indicate that the last result was reached)
  • Ability to save and load logs (as text or as full records)
  • Alarms/notifications triggered by specified messages
  • Figure out how to search up

Code improvements:

  • Proper exception handling in critical places
  • Message boxes for errors to avoid relying on CLI logging
  • Ability to ignore resources.py and instead use actual files for quick stylesheet reload, etc.

Dreams, uncertainties, and low priority improvements:

  • Rewrite all/most UIs in code instead of using Qt Designer
  • Switch to qtawesome instead of ion-icons?
  • Support for custom themes?
  • Rewrite the server with robust architecture and additional transports and serializers (e.g. ZeroMQ, WebSockets; msgpack)?
  • Ditch asyncio if/when curio takes off?
  • Or rewrite the whole thing in C++ and make it be a generic logging receiver not just for Python???

Attributions

Free software used:

And thanks to logview by Vinay Sajip for UI inspiration.

Copyright and license

Copyright (C) 2018, Alexander Bus

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License version 3 as published by the Free Software Foundation.

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.

cutelog's People

Contributors

aberrya avatar busimus avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.