alog
alog
is a simple log file anonymizer.
About
In fact alog
just replaces the first word[^1] on every line of any input stream with a
customizable string.
So "log file anonymizer" might be a bit of an overstatement, but alog
can be used to (very
efficiently) replace the $remote_addr part in many access log formats, e.g. Nginx' default
combined log format:
log_format combined '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
By default any parseable $remote_addr is replaced by it's localhost representation,
- any valid IPv4 address is replaced by '127.0.0.1',
- any valid IPv6 address is replaced by '::1' and
- any String (what might be a domain name) with 'localhost'.
Lines without a $remote_addr part will remain unchanged (but can be skipped with
[alog::Config::set_skip()
] set to true
).
[^1]: Any first substring or (zero width) anchor ^
separated by a b' '
(Space) from the
remainder of the line.
Building alog
With version 0.3 [features]
where added, so that the library crate won't pull unneeded
dependencies anymore.
Commandline Tool
To build the alog
commandline tool you now have to expicitly add --features
.
cargo build --features alog-cli
or
cargo build --all-features
Usage
Commandline tool
Run cli-tool with --help
.
./target/release/alog --help
Library
Calling run()
extern crate alog;
or run_raw()
extern crate alog;
use Cursor;
Project status
alog
started as a replacement for a <10 line Perl script running on an old backup host.
So nothing shiny.. but it helped me learning some Rust (and crates.io) basics.
With version 0.5.6 I consider alog
feature complete. It doesn't do much, but it does it
quite well. At some point I might re-use this crate to add parallel processing or try
harder to actually anonymize data. But for now, this is it.
I will still fix bugs when (and if) I find them, so alog
is now passively-maintained.