hitlog

Simple self-hosted pageview logging

Usage no npm install needed!

<script type="module">
  import hitlog from 'https://cdn.skypack.dev/hitlog';
</script>

README

Hitlog

Hitlog is self-hosted pageview logging that doesn't impede your users' privacy. Hitlog is a Node server you host that serves a logging JS file to be run on clients, and takes AJAX requests from those clients to log views. It logs the request URL of a user, their IP, and their User-Agent, and groups requests they make in a short time into a "session", which is then logged to disk.

Getting started

Install via NPM

Installing:

$ npm install --global hitlog

Running server:

$ hitlog [logging directory]

A config file will be created in the logging directory. The default port is 4802.

Install via Docker

You can also run Hitlog with Docker:

$ docker run -d -p 4802:4802 benjaminlowry/hitlog

Usage

The server hitlog hosts serves a client.js file that enables logging when included in your page. For example, if your website was example.com and you had hitlog running on log.example.com, you could include hitlog with the script src https://log.example.com/client.js.

Configuring

See CONFIG-GUIDE.md

Log file format

Data is logged in .hitlog JSON files, with names like YYYY-MM-DD.hitlog.

The first line of the file is an empty JSON object {}; each other line is a list of objects that describe a single pageview. Each object in the list has the following properties:

time: UNIX timestamp of pageview

path: full URL of pageview

agent: User-Agent

os: Operating system (e.g. Win32 or MacIntel)

Example of a hitlog with a single session and 2 pageviews:

{}
[{"time":1552784245413,"path":"http://localhost:4802/test.html","agent":"Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0","ip":"::ffff:127.0.0.1"},{"time":1552784250887,"path":"http://localhost:4802/test.html","agent":"Mozilla/5.0 (Windows NT 6.1; rv:60.0) Gecko/20100101 Firefox/60.0","ip":"::ffff:127.0.0.1"}]

License

Copyright (C) 2019 Benjamin Lowry <benjaminlowry.com>

This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

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.

You should have received a copy of the GNU General Public License
along with this program.  If not, see <https://www.gnu.org/licenses/>.