Skip to main content

Awesome plots from custom logs

Project description

# LogPlot

[![Build Status](https://travis-ci.org/jerry-git/logplot.svg?branch=master)](https://travis-ci.org/jerry-git/logplot)
[![PyPI version](https://badge.fury.io/py/logplot.svg)](https://pypi.python.org/pypi/logplot/)
[![PyPI pyversions](https://img.shields.io/pypi/pyversions/logplot.svg)](https://pypi.python.org/pypi/logplot/)
[![codecov](https://codecov.io/gh/jerry-git/logplot/branch/master/graph/badge.svg)](https://codecov.io/gh/jerry-git/logplot)
[![license](https://img.shields.io/github/license/jerry-git/logplot.svg)](https://github.com/jerry-git/logplot/blob/master/LICENSE)
[![PRs](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](http://makeapullrequest.com)


<p align="center">
<img src="https://github.com/jerry-git/logplot/blob/master/doc/examples/example.gif" alt="example gif"/>
</p>


## Installation
$ pip3 install logplot

## Usage

### Configuration
In order to plot interesting graphs from custom logs, `logplot` needs to know what log entries are considered interesting.
This can be done by defining `entries` and `special_entries` sections in the config file.
The main purpose of `entries` is to plot trends, i.e. connected points. This is useful e.g. for plotting state machine states.
`special_entries` is for plotting single, unconnected points, such as errors.

Each entry in `entries` and `special_entries` should have the following:
* `identifier`: string to be searched from log entries
* `value`: y-axis value in the plot

Ideally, one entry in `entries` should have `initial_state: true`. This is used for separating plotted series from each other.

You can define specific marker style for each entry in `special_entries`, refer to [`matplotlib` docs](https://matplotlib.org/api/markers_api.html) for available options.


In addition to the `entries` and `special-entries` sections, user can override default settings (see src/logplot/default_conf.yaml) in `general` section.
For example, it's the place where you can define the command to be used for opening the log in your favorite editor.

See doc/example/user_conf.yaml and corresponding log file (doc/example/log.txt) for full example.

### Plotting logs

$ logplot path/to/log -c path/to/conf/file

For example, this:

$ logplot doc/examples/log.txt -c doc/examples/user_conf.yaml

yields this:

<p align="center">
<img src="https://github.com/jerry-git/logplot/blob/master/doc/examples/plot.png" alt="example plot"/>
</p>

Clicking a data point in the plot opens the log file in the correct line number in the editor defined in the configuration file.
If the `log_open_cmd` is not configured, the log will be opened with a default program defined by the OS.
Note that `log_open_cmd` has to configured to be able to open the log in the correct line number.

`logplot` will automatically identify different trends in the plotted entries.
You can toggle the visibility of these trends by clicking items in the legend.

Here's an example of a bit bigger log which contains 100k entries, 13 different states, and 15 different trends.

$ logplot doc/examples/log_huge.txt -c doc/examples/user_conf_huge.yaml

<p align="center">
<img src="https://github.com/jerry-git/logplot/blob/master/doc/examples/plot_huge.png" alt="example plot huge"/>
</p>

And the same with three most occuring trends filtered out.

<p align="center">
<img src="https://github.com/jerry-git/logplot/blob/master/doc/examples/plot_huge_filtered.png" alt="example plot huge filtered"/>
</p>

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

logplot-1.0.4.tar.gz (13.9 MB view hashes)

Uploaded Source

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page