bokamba / loganvil / nginx access logs

$ loganvil generate nginx

Generate synthetic nginx access logs

Generate realistic synthetic nginx access logs (combined/CLF format) for pipeline testing, SIEM demos, and detection tuning — deterministic and 100% client-side. Every line is a real on-the-wire nginx combined line: client IP, CLF timestamp, request line, status, bytes, referer and user agent — with no real users, IPs, or secrets. Seed a parser smoke-test, then inject an HTTP 5xx spike to prove your rules fire.

Open the LogAnvil generator →

This sample, generated

The block below is 15 lines of nginx access logs, produced by the real generator at seed 42 — deterministic, so this exact output regenerates anywhere. The live tool re-runs the identical engine on whatever source, seed, line count and anomalies you pick.

15lines
4.5stime span
0anomaly lines
42seed

no anomalies injected — raise a slider to seed detectable patterns

Generated nginx access logs

Real on-the-wire nginx access logs — no real users, IPs, or secrets. Copy it into a fixture, feed it to a parser, or seed a SIEM demo.

172.16.31.77 - - [13/Sep/2020:12:26:40 +0000] "POST /static/style.css HTTP/1.1" 200 17486 "https://example.com/login" "Googlebot/2.1 (+http://www.google.com/bot.html)"
192.168.10.7 - - [13/Sep/2020:12:26:40 +0000] "POST /favicon.ico HTTP/1.1" 200 43943 "https://example.com/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
13.107.42.14 - - [13/Sep/2020:12:26:40 +0000] "GET /logout HTTP/1.1" 200 50147 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
185.199.108.153 - - [13/Sep/2020:12:26:40 +0000] "GET /api/v1/orders/5140 HTTP/1.1" 200 15691 "https://example.com/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
198.51.100.23 - - [13/Sep/2020:12:26:41 +0000] "GET /logout HTTP/1.1" 200 42231 "https://example.com/login" "python-requests/2.31.0"
192.168.100.254 - - [13/Sep/2020:12:26:41 +0000] "GET /search HTTP/1.1" 200 1013 "https://www.bing.com/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1"
34.223.14.100 - - [13/Sep/2020:12:26:41 +0000] "PUT /logout HTTP/1.1" 200 33300 "https://news.ycombinator.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
192.168.10.7 - - [13/Sep/2020:12:26:42 +0000] "GET /static/app.js HTTP/1.1" 200 20669 "https://news.ycombinator.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0"
203.0.113.201 - - [13/Sep/2020:12:26:42 +0000] "POST /api/v1/orders/29593 HTTP/1.1" 200 20051 "https://news.ycombinator.com/" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
192.168.1.133 - - [13/Sep/2020:12:26:43 +0000] "GET /search HTTP/1.1" 200 44780 "https://www.google.com/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1"
172.16.4.9 - - [13/Sep/2020:12:26:43 +0000] "GET /static/app.js HTTP/1.0" 200 25148 "-" "Googlebot/2.1 (+http://www.google.com/bot.html)"
192.168.1.50 - - [13/Sep/2020:12:26:43 +0000] "GET /metrics HTTP/1.0" 200 31312 "https://www.google.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
104.16.132.229 - - [13/Sep/2020:12:26:43 +0000] "GET / HTTP/1.1" 500 36631 "https://t.co/abcdEFG" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
10.10.10.10 - - [13/Sep/2020:12:26:44 +0000] "GET /api/v1/orders/68613 HTTP/1.1" 200 57321 "https://www.bing.com/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1"
192.168.0.101 - - [13/Sep/2020:12:26:44 +0000] "GET /favicon.ico HTTP/1.1" 200 42835 "https://www.google.com/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"

With an anomaly injected: HTTP 5xx spike

The same source, regenerated with a HTTP 5xx spike injected at 30% intensity. 1 line is tagged and highlighted below — A run of 5xx responses from one client/path — an outage or an app under attack a SOC should page on. It is a documented, detectable pattern your SIEM rules should fire on — build the test data, then prove your detection works.

172.16.31.77 - - [13/Sep/2020:12:26:40 +0000] "POST /static/style.css HTTP/1.1" 200 17486 "https://example.com/login" "Googlebot/2.1 (+http://www.google.com/bot.html)"
192.168.10.7 - - [13/Sep/2020:12:26:40 +0000] "POST /favicon.ico HTTP/1.1" 200 43943 "https://example.com/login" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
13.107.42.14 - - [13/Sep/2020:12:26:40 +0000] "GET /logout HTTP/1.1" 200 50147 "https://example.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
185.199.108.153 - - [13/Sep/2020:12:26:40 +0000] "GET /api/v1/orders/5140 HTTP/1.1" 200 15691 "https://example.com/login" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Safari/605.1.15"
198.51.100.23 - - [13/Sep/2020:12:26:41 +0000] "GET /logout HTTP/1.1" 200 42231 "https://example.com/login" "python-requests/2.31.0"
80.82.77.139 - - [13/Sep/2020:12:26:41 +0000] "GET /search HTTP/1.1" 504 1013 "https://www.bing.com/" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.1 Mobile/15E148 Safari/604.1"HTTP 5xx spike
34.223.14.100 - - [13/Sep/2020:12:26:41 +0000] "PUT /logout HTTP/1.1" 200 33300 "https://news.ycombinator.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"
192.168.10.7 - - [13/Sep/2020:12:26:42 +0000] "GET /static/app.js HTTP/1.1" 200 20669 "https://news.ycombinator.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:121.0) Gecko/20100101 Firefox/121.0"

FAQ

Are these real nginx logs?
No — every line is synthetic. The generator emits the exact on-the-wire nginx combined format (IP, CLF timestamp, request, status, bytes, referer, user agent), but the addresses, paths and agents are all fabricated. Nothing comes from a real server or real users, so the output is safe to paste into a ticket, a fixture, or a public demo.
Can I inject anomalies?
Yes. An HTTP 5xx spike slider flips a contiguous run of responses to 500/502/503/504 pinned to one hammering client — the exact shape a SOC should page on. There are five injectable patterns in all; raise a slider and the affected lines are highlighted and badged so you can confirm your detection rules fire on them.
Is the output deterministic?
Yes. Generation is fully seeded: the same source, line count, seed, EPS, format and anomaly settings always produce byte-identical output. Commit a seed to a test fixture and regenerate the exact same nginx log on any machine, in CI, or a year later.

Generate other log sources

Open the LogAnvil generator to tune the seed, line count, EPS, format and anomaly sliders — or build a parser with LogForge for a log you already have.

Generate your own nginx access logs

Pick the seed, line count and EPS, inject the anomalies your rules should catch, and copy or download the result. Free, no account, nothing uploaded — generation runs entirely in your browser.

Open the LogAnvil generator →