bokamba / loganvil / Docker container logs

$ loganvil generate docker

Generate synthetic Docker container logs

Generate realistic synthetic Docker container logs (logfmt) for pipeline testing, SIEM demos, and detection tuning — deterministic and 100% client-side. Each line is a real dockerd logfmt daemon line — quoted RFC3339-nano time, level, msg, container, image, name — so it exercises a logfmt/key=value parser precisely. No real containers or secrets.

Open the LogAnvil generator →

This sample, generated

The block below is 15 lines of Docker container 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.6stime span
0anomaly lines
42seed

no anomalies injected — raise a slider to seed detectable patterns

Generated Docker container logs

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

time="2020-09-13T12:26:40.000Z" level=error msg="Health check failed" container=d41e5f6072bc image="redis:7.2" name=web-1
time="2020-09-13T12:26:40.340Z" level=warning msg="Container stopped" container=d41e5f6072bc image="api:2.4.1" name=web-1
time="2020-09-13T12:26:40.775Z" level=error msg="Health check failed" container=9f3c2d1a4b7e image="redis:7.2" name=cache-1
time="2020-09-13T12:26:41.138Z" level=info msg="Health check failed" container=d41e5f6072bc image="nginx:1.27" name=cache-1
time="2020-09-13T12:26:41.346Z" level=warning msg="Container started" container=9f3c2d1a4b7e image="postgres:16" name=cache-1
time="2020-09-13T12:26:41.553Z" level=info msg="Image pulled" container=ab112cd3f001 image="postgres:16" name=api-2
time="2020-09-13T12:26:41.873Z" level=info msg="Container started" container=c7d90e12aa34 image="redis:7.2" name=web-1
time="2020-09-13T12:26:42.245Z" level=info msg="Health check failed" container=c7d90e12aa34 image="postgres:16" name=cache-1
time="2020-09-13T12:26:42.499Z" level=warning msg="Health check failed" container=9f3c2d1a4b7e image="redis:7.2" name=cache-1
time="2020-09-13T12:26:42.884Z" level=debug msg="Container started" container=d41e5f6072bc image="api:2.4.1" name=db-1
time="2020-09-13T12:26:43.121Z" level=info msg="Container started" container=ab112cd3f001 image="api:2.4.1" name=cache-1
time="2020-09-13T12:26:43.561Z" level=info msg="Container stopped" container=d41e5f6072bc image="api:2.4.1" name=cache-1
time="2020-09-13T12:26:43.809Z" level=error msg="Image pulled" container=9f3c2d1a4b7e image="postgres:16" name=cache-1
time="2020-09-13T12:26:44.253Z" level=warning msg="Container stopped" container=ab112cd3f001 image="redis:7.2" name=api-2
time="2020-09-13T12:26:44.648Z" level=warning msg="Health check failed" container=d41e5f6072bc image="redis:7.2" name=db-1

With an anomaly injected: Port scan

The same source, regenerated with a Port scan injected at 30% intensity. 7 line sare tagged and highlighted below — One source IP hitting many sequential destination ports — reconnaissance sweeping for open services. It is a documented, detectable pattern your SIEM rules should fire on — build the test data, then prove your detection works.

time="2020-09-13T12:26:40.000Z" level=error msg="Health check failed" container=d41e5f6072bc image="redis:7.2" name=web-1
time="2020-09-13T12:26:40.340Z" level=warning msg="Container stopped" container=d41e5f6072bc image="api:2.4.1" name=web-1
time="2020-09-13T12:26:40.775Z" level=error msg="Health check failed" container=9f3c2d1a4b7e image="redis:7.2" name=cache-1
time="2020-09-13T12:26:41.138Z" level=info msg="Health check failed" container=d41e5f6072bc image="nginx:1.27" name=cache-1
time="2020-09-13T12:26:41.346Z" level=warning msg="Container started" container=9f3c2d1a4b7e image="postgres:16" name=cache-1
time="2020-09-13T12:26:41.553Z" level=info msg="Image pulled" container=ab112cd3f001 image="postgres:16" name=api-2
time="2020-09-13T12:26:41.873Z" level=info msg="Container started" container=c7d90e12aa34 image="redis:7.2" name=web-1
time="2020-09-13T12:26:42.245Z" level=info msg="Health check failed" container=c7d90e12aa34 image="postgres:16" name=cache-1
srcip=89.248.165.74 dstip=203.0.113.76 dstport=75 action=deny sentbyte=93Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=76 action=deny sentbyte=95Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=77 action=deny sentbyte=96Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=78 action=deny sentbyte=115Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=79 action=deny sentbyte=47Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=80 action=deny sentbyte=116Port scan
srcip=89.248.165.74 dstip=203.0.113.76 dstport=81 action=deny sentbyte=74Port scan

FAQ

Are these real Docker logs?
No — the output is synthetic. It reproduces the dockerd logfmt line shape (time, level, msg, container, image, name) with realistic values, but every container, image and message is fabricated. Safe for fixtures, demos and parser tests.
Can I inject anomalies?
Yes. Raise any of the five sliders; for a key=value source a port scan is appended in faithful grammar, with the injected lines highlighted and badged so you can verify your detection fires.
Is the output deterministic?
Yes — fully seeded. The same seed and config always produce byte-identical Docker lines, so a committed seed regenerates the identical log anywhere.

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 Docker container 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 →