5 unstable releases
Uses new Rust 2024
0.3.0 | Jun 10, 2025 |
---|---|
0.2.2 | Jun 9, 2025 |
0.2.1 | Jun 8, 2025 |
0.2.0 | Jun 8, 2025 |
0.1.0 | Jun 8, 2025 |
#569 in Network programming
368 downloads per month
11KB
117 lines
htcount
Simple CLI/daemon tool for counting visitors using access.log
in the Common Log Format
Export totals in multiple formats, such as JSON or SVG badge!
Features
Export formats
- JSON - for API usage
- SVG - configurable or default badge button
Install
git clone https://github.com/YGGverse/htcount.git && cd htcount
cargo build --release
sudo install target/release/htcount /usr/local/bin/htcount
Usage
htcount --source /var/log/nginx/access.log\
--target-svg /path/to/badge.svg\
--template-svg /path/to/counter/template.svg
- see
default/counter.svg
Options
-d, --debug <DEBUG>
Debug level
* `i` - info * `d` - detailed
[default: i]
--target-json <TARGET_JSON>
Export results to JSON file (e.g. `/path/to/stats.json`)
--target-svg <TARGET_SVG>
Export results to SVG file (e.g. `/path/to/badge.svg`)
* use `{hits}` / `{hosts}` pattern to replace parsed values
--template-svg <TEMPLATE_SVG>
Use custom SVG file template with `{hits}` / `{hosts}` placeholders
[default: default/counter.svg]
-m, --match-time <MATCH_TIME>
Filter records match time pattern (e.g. `%d/%b/%Y`)
-c, --index-capacity <CAPACITY>
Expected memory index capacity
[default: 100]
-i, --ignore-host <IGNORE_HOST>
Exclude host(s) from index
-s, --source <SOURCE>
Access log source (e.g. `/var/nginx/access.log`)
-u, --update <UPDATE>
Update delay in seconds
[default: 300]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
systemd
#/etc/systemd/system/htcount.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
ExecStart=/usr/local/bin/htcount --source /var/log/nginx/access.log\
--target-svg /var/www/htcount/visitors.svg\
--template-svg /path/to/default/template.svg\
--ignore-host 127.0.0.1\
--ignore-host 127.0.0.2\
--match-time %%d/%%b/%%Y\
--update 3600\
--debug n
StandardOutput=null
StandardError=null
[Install]
WantedBy=multi-user.target
- make sure
/var/www/htcount
directory exists - replace
/path/to/default/template.svg
with your custom template path - use
ignore-host
to skip local host requests - to filter today-only records, use
match-time
argument%d/%b/%Y
- to filter this month-only records use
%b/%Y
- make sure the time pattern in the example above corresponds to your
access.log
format - make sure the log time pattern
%
is escaped to%%
- to filter this month-only records use
Service management tips
systemctl daemon-reload
- update configurationsystemctl enable
- launch on system startupsystemctl restart htcount
- start systemd servicesystemctl status htcount
- check if service is running
Live examples
Dependencies
~2–3MB
~50K SLoC