Every log pipeline has a contract: the shape each line is supposed to take so the next tool down the line can parse it. When a line breaks that contract — a mangled exporter, an extra field, a missing timestamp, a stray unescaped character in a JSON blob — downstream parsers silently drop the line, mis-slice a field, or corrupt an aggregate without ever raising an error. Log Format Validator checks a log against the format the system is supposed to emit and shows every line that does not comply, with its line number, so the offenders are trivial to locate instead of hiding somewhere in a wall of text.
Built-in presets cover the shapes seen most often in practice: a standard timestamp-and-level line, Apache/nginx combined access log format, syslog-style RFC 3164 entries, and structured JSON where each line must parse as its own valid object. A custom mode drops the presets entirely and validates every line against any regular expression supplied, anchored or not, for formats the presets do not cover. Each non-empty line is measured independently against the chosen contract — in JSON mode by attempting to parse it, in every other mode by requiring the pattern to match the entire line, not just a substring somewhere inside it — and the pass, fail, and pass-rate numbers reported in the summary always add up to exactly the lines shown as failing in the detail list below them.
Blank lines are treated as formatting, not data: they are skipped entirely rather than counted as either a pass or a failure, so a log with occasional blank separators between entries does not have its pass rate artificially dragged down by lines that were never meant to carry content in the first place.