Log to Table
Paste logs and extract columns with named regex groups or ready-made presets for Apache access logs, syslog, and log4j-style application logs. Export Markdown, CSV, TSV, or JSON locally.
About this tool
Log to Table extracts structured columns from semi-structured log lines. Use a custom Rust regular expression with named capture groups such as (?P<level>\w+), or choose a preset for common formats. The named groups become output columns in a Markdown table, CSV, TSV, or JSON array.
Worked example:
Log input:
ERROR 42 failed to connect
INFO 7 retry scheduled
Pattern:
^(?P<level>\w+) (?P<code>\d+) (?P<message>.*)$
CSV output:
level,code,message
ERROR,42,failed to connect
INFO,7,retry scheduled
Presets cover Apache/nginx common and combined access logs, RFC 3164-style syslog, and log4j-style application lines. For other formats, switch to custom and provide the exact named-group regex.
Limits and edge cases
- Custom patterns use Rust's linear-time
regexengine, so backreferences and look-around are not supported. limitcaps emitted rows from 1 to 5000; the default is 500.- Blank input lines are ignored.
- Non-matching lines can be skipped, kept in an
unparsedcolumn, or treated as an error. - CSV/TSV fields are quoted when needed; Markdown output escapes pipe characters inside cells.
- Multiline log entries are treated as separate lines; this tool does not merge stack traces into a single event.
FAQ
How do I create columns with a custom pattern?
Use named capture groups. For example, ^(?P<ip>\S+) (?P<status>\d{3}) (?P<path>\S+)$ creates the columns ip, status, and path in that order.
What should I use for lines that do not match?
Use skip to drop them, keep to emit an unparsed column containing the raw line, or error when every line is expected to match and mismatches should fail fast.
Can this parse Apache or syslog without writing a regex?
Yes. Choose common or combined for Apache/nginx access logs, syslog for RFC 3164-style syslog, or log4j for typical timestamp/level/logger/message application logs.
Why does my regex work elsewhere but fail here?
This tool uses Rust regex syntax. It supports named captures with (?P<name>...) and avoids features such as look-around or backreferences to keep matching predictable and safe in WebAssembly.
Developer & Automation Access
Run it from the terminal
Same engine as this page, headless — via the gizza CLI:
gizza tool log-to-table "ERROR 42 failed to connect
INFO 7 retry scheduled"New to the CLI? Get gizza →
Open it by URL
Pre-fill and auto-run this tool with query parameters — the names match the API/CLI:
https://gizza.ai/tools/log-to-table/?logs=ERROR%2042%20failed%20to%20connect%0AINFO%207%20retry%20scheduled&preset=custom&pattern=%5E%28%3FP%3Clevel%3E%5Cw%2B%29%20%28%3FP%3Ccode%3E%5Cd%2B%29%20%28%3FP%3Cmessage%3E.%2A%29%24&output=table&header=true&on_nomatch=skip&limit=500Machine-readable descriptor: tool.json — title + parameters JSON Schema for agents.
