Some systems speak XML, not JSON. Legacy enterprise pipelines, ESB integrations, SOAP-based feed handlers and compliance archives often expect logs wrapped in well-formed XML — and pasting raw text into them breaks parsing instantly. Log to XML Converter turns any batch of log lines into a structured, valid XML document in one paste, entirely in your browser.
The parser recognizes the common log dialects — bracket timestamps like [2026-08-15 09:12:33] [ERROR] [api], plain timestamp LEVEL category lines, key=value trails, JSONL lines and syslog headers — and maps each line to one log entry element under a single root element. In the default mixed style, timestamp, level and category become attributes on the entry element, the message becomes the text of a nested <message> element, and every remaining key=value pair (like user_id, ip or status) becomes its own child element, so the shape of your logs is preserved as real XML structure instead of one long unparsed string.
Output is fully configurable for whatever is consuming it. Rename the root element (default log) and the entry element (default entry) to match a schema your downstream system already expects — both names are honored consistently across every mode, including the entry-wrapping tag itself. Switch field style between the default mixed mode, an attribute-only mode that emits one compact self-closing element per log line (handy for toolchains that read metadata off attributes rather than parsing child nodes), or an element-only mode where every field, including timestamp and level, becomes its own nested child element wrapped inside the entry tag. Toggle pretty-printed, indented output for human review and diffing, or minified single-line output when byte size matters for a pipeline. An XML declaration (<?xml version="1.0" encoding="UTF-8"?>) can be included or omitted depending on whether your consumer expects one.
Special characters — ampersands, angle brackets, quotes and apostrophes — are escaped in both attribute values and element text, so a message containing a literal & or a stray < still produces valid, parseable XML rather than a document that silently fails to load. Element and tag names derived from your data (like a field called 2xx-count) are automatically sanitized into legal XML tag names. Lines that cannot be parsed at all are skipped and reported by line number instead of corrupting the document. Everything — detection, parsing, escaping and XML assembly — runs locally; your logs never leave the page.