iwla

iwla Git Source Tree

Root/docs/main.md

1iwla
2====
3
4Introduction
5------------
6
7iwla (Intelligent Web Log Analyzer) is basically a clone of [awstats](http://www.awstats.org). The main problem with awstats is that it's a very monolithic project with everything in one big PERL file. In opposite, iwla has been though to be very modular : a small core analysis and a lot of filters. It can be viewed as UNIX pipes. Philosophy of iwla is : add, update, delete ! That's the job of each filter : modify statistics until final result. It's written in Python.
8
9Nevertheless, iwla is only focused on HTTP logs. It uses data (robots definitions, search engines definitions) and design from awstats. Moreover, it's not dynamic, but only generates static HTML page (with gzip compression option).
10
11Usage
12-----
13
14 ./iwla [-c|--clean-output] [-i|--stdin] [-f FILE|--file FILE] [-d LOGLEVEL|--log-level LOGLEVEL] [-r|--reset year/month] [-z|--dont-compress] [-p] [-D|--dry-run]
15
16 -c : Clean output (database and HTML) before starting
17 -i : Read data from stdin instead of conf.analyzed_filename
18 -f : Analyse this log file, multiple files can be specified (comma separated). gz files are acceptedRead data from FILE instead of conf.analyzed_filename
19 -d : Loglevel in ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
20 -r : Reset analysis to a specific date (month/year)
21 -z : Don't compress databases (bigger but faster, not compatible with compressed databases)
22 -p : Only generate display
23 -d : Dry run (don't write/update files to disk)
24
25Basic usage
26-----------
27
28In addition to command line, iwla read parameters in default_conf.py. User can override default values using _conf.py_ file. Each module requires its own parameters.
29
30Main values to edit are :
31
32 * **analyzed_filename** : web server log
33 * **domaine_name** : domain name to filter
34 * **pre_analysis_hooks** : List of pre analysis hooks
35 * **post_analysis_hooks** : List of post analysis hooks
36 * **display_hooks** : List of display hooks
37 * **locale** : Displayed locale (_en_ or _fr_)
38
39You can also append an element to an existing default configuration list by using "_append" suffix. Example :
40 multimedia_files_append = ['xml']
41or
42 multimedia_files_append = 'xml'
43Will append 'xml' to current multimedia_files list
44
45Then, you can launch iwla. Output HTML files are created in _output_ directory by default. To quickly see it, go into _output_ and type
46
47 python -m SimpleHTTPServer 8000
48
49Open your favorite web browser at _http://localhost:8000_. Enjoy !
50
51**Warning** : The order in hooks list is important : Some plugins may requires others plugins, and the order of display_hooks is the order of displayed blocks in final result.
52
53
54Interesting default configuration values
55----------------------------------------
56
57 * **DB_ROOT** : Default database directory (default ./output_db)
58 * **DISPLAY_ROOT** : Default HTML output directory (default _./output_)
59 * **log_format** : Web server log format (nginx style). Default is apache log format
60 * **time_format** : Time format used in log format
61 * **pages_extensions** : Extensions that are considered as a HTML page (or result) in opposit to hits
62 * **viewed_http_codes** : HTTP codes that are cosidered OK (200, 304)
63 * **count_hit_only_visitors** : If False, don't count visitors that doesn't GET a page but resources only (images, rss...)
64 * **multimedia_files** : Multimedia extensions (not accounted as downloaded files)
65 * **css_path** : CSS path (you can add yours)
66 * **compress_output_files** : Files extensions to compress in gzip during display build
67
68Plugins
69-------
70
71As previously described, plugins acts like UNIX pipes : statistics are constantly updated by each plugin to produce final result. We have three type of plugins :
72
73 * **Pre analysis plugins** : Called before generating days statistics. They are in charge to filter robots, crawlers, bad pages...
74 * **Post analysis plugins** : Called after basic statistics computation. They are in charge to enlight them with their own algorithms
75 * **Display plugins** : They are in charge to produce HTML files from statistics.
76
77To use plugins, just insert their file name (without _.py_ extension) in _pre_analysis_hooks_, _post_analysis_hooks_ and _display_hooks_ lists in conf.py.
78
79Statistics are stored in dictionaries :
80
81 * **month_stats** : Statistics of current analysed month
82 * **valid_visitor** : A subset of month_stats without robots
83 * **days_stats** : Statistics of current analysed day
84 * **visits** : All visitors with all of its requests
85 * **meta** : Final result of month statistics (by year)
86
87Create a Plugins
88----------------
89
90To create a new plugin, it's necessary to subclass IPlugin (_iplugin.py) in the right directory (_plugins/xxx/yourPlugin.py_).
91
92Plugins can defines required configuration values (self.conf_requires) that must be set in conf.py (or can be optional). They can also defines required plugins (self.requires).
93
94The two functions to overload are _load(self)_ that must returns True or False if all is good (or not). It's called after _init_. The second is _hook(self)_ that is the body of plugins.
95
96For display plugins, a lot of code has been wrote in _display.py_ that simplify the creation on HTML blocks, tables and bar graphs.
97
98Plugins
99=======
100
101Optional configuration values ends with *.
102

Archive Download this file

Branches

Tags