Log analytics

Beemo provides the means to process your Beemo site’s Apache logs and generate a simple analytics site based on the site contents.

beemo logs       # process Apache gz logs → CSV files
beemo analytics  # generate HTML analytics site

Both subcommands read their defaults from BEEMO_CONFIG. Any setting can be overridden on the command line — run with --help for details.

Log processing

Log processing is handled by the beemo logs command. It reads gzipped Apache logs, extracts the relevant fields, and writes them out as CSV files. These CSV files are the source data for the analytics site.

Analytics site generation

The beemo analytics command reads the CSV files generated by beemo logs and produces a multi-page HTML site. It uses a Chameleon template to render the pages.

Usage

With beemo[logs] installed and logs/analytics sections in your config, you can process your Apache logs with beemo logs and build your analytics site with beemo analytics with the environment variable BEEMO_CONFIG set pointing at a valid config file. It will build your analytics site into your configured output_dir. Alternatively, use the options which are documented on the beemo logs and beemo analytics pages to specify various configuration on the command line.

This can be served locally with e.g. python -m http.server -d analytics and viewed at e.g. http://localhost:8000.

beemo analytics is incremental: year and month pages are skipped if their output file is newer than all source CSVs. The summary page (last 30 days) always regenerates.

The analytics output is a multi-page site:

output_dir/
├── index.html          ← last 30 days summary
└── 2026/
    ├── index.html      ← full year
    ├── 03/
    │   └── index.html  ← March 2026
    └── 04/
        └── index.html  ← April 2026

Template

The analytics template (analytics.pt) must be placed in your site’s templates_dir alongside your other Chameleon templates.