Skip to content
Display real time statistics of whatever you want.
C Python
Latest commit b5d92a3 Sep 1, 2014 @JulienPalard Merge pull request #3 from methodmissing/master
Support building on Darwin too
Failed to load latest commit information.
doc Upgrading documentation and manpage. May 20, 2012
examples Documentation and example of the Python API Aug 10, 2013
src FIX: Style Aug 10, 2013
tests Adding a test file for python module Mar 20, 2013
.gitignore .gitignore examples, binaries and shared libs Aug 29, 2014
ChangeLog Documentation and example of the Python API Aug 10, 2013
Makefile Introduce support for overriding the include path Sep 1, 2014
README Fix typo Jun 25, 2014
logtop.i NEW: delete_logtop_state Aug 10, 2013


For copyright information, please see the file COPYRIGHT in this
directory or in the files of the source tree.

This project was initiated on 2010-06-29 by Palard Julien
See or ask me questions at :
julien at palard in fr

Compile dependencies :
    You will need :
    Package: libncurses5-dev
      Version: 5.7+20100313-1
    $ aptitude install libncurses5-dev uthash-dev

    Then, to compile just type :
    $ make

Run :
    You will need :
    $ aptitude install libncurses5
    $ ./logtop

Python module compile dependencies :
    You will need :
    $ aptitude install python-dev swig

    Then, to compile :
    $ make python-module
    $ python install

Usage :
  logtop displays real-time count of strings received in standard input.
  I's useful for some cases, like getting the IP flooding your server :
  $ tail -f /var/log/apache2/access.log | cut -d' ' -f1 | logtop

  Or the top buzzing article of your blog :
  $ tail -f /var/log/apache2/access.log | cut -d' ' -f7 | grep article | logtop

Development :
  I use a hashtable to store strings and an AVL tree to store frequencies,
  so I can fetch by string or fetch ordered by frequency to display the


  Logtop can be used by your C programs, you may to compile against
  logtop's sources (src/{avl.c,history.c,logtop.c,libavl/avl.c}) or
  against liblogtop, obtained using 'make liblogtop`.

  C API is exposed in logtop.h, you need :

  - struct logtop *new_logtop(size_t history_size);
  - void delete_logtop(struct logtop *this);
  - void logtop_feed(struct logtop *this, char *line);
  - struct logtop_state *logtop_get(struct logtop *this, size_t qte);
  - double logtop_timespan(struct logtop *this);
  - unsigned int logtop_qte_of_elements(struct logtop *this);

  You can find an example of using the C API in examples/example1.c

Python API :
  logtop module exposes a logtop class containing :
    logtop.__init__(history_size) to build a new logtop keeping
                                  at most history_size lines.
    logtop.feed(line) to feed a new line in logtop.
    logtop.get(qte_of_elements) to get the top qte_of_elements lines.
    logtop.qte_of_elements() to get the current total number of lines.
    logtop.timespan() to get the duration from the oldest line to now.

  timespan may be less than the runtime, as logtop drop old lines,
  to keep, at most, history_size lines, given in the constructor of
  the logtop class.

About libavl:
  The libavl used here is the Ben Pfaff's one, statically build with logtop, as
  Ben want it to be (see INSTALL file and here :
  So this libavl is NOT packaged as a library for Debian, the libavl you'll
  found in Debian repositories is the Wessel Dankers's one.
Something went wrong with that request. Please try again.