DB Internals AtlasPostgreSQL 18.6 Home About

Parameter · Reporting and Logging / Where to Log

syslog_split_messages

Split messages sent to syslog by lines and to fit into 1024 bytes.

  • Default: on
  • Type: bool
  • Applies: Reload

In plain words

Syslog was designed for short single-line messages. With this on, PostgreSQL breaks long messages (and messages with several lines, like an ERROR plus its STATEMENT) into numbered pieces, so nothing is cut off by syslog.

For DBAs and operators

When on, a message longer than about 900 bytes, or containing newlines, is sent as several syslog records, each tagged [seq-chunk] (chunk counter from 1). Off sends the whole message as one record, which modern daemons (rsyslog, journald) handle fine up to their own limit (often 8KB), but the embedded newlines then end up inside one record. Captured with on:

[8-1] 2026-10-22 15:40:32.552 UTC [7254] ERROR: invalid input syntax for type integer: [8-2] "xxxxxxxx… (≈900-byte chunks) [8-3] xxxxxxxx… [8-4] 2026-10-22 15:40:32.552 UTC [7254] STATEMENT: select repeat('x', 1500)::int

Leave it on unless your log pipeline reassembles multi-line records itself. Note how huge parameter values or query texts get split across many lines; that is a good reason to cap them with log_parameter_max_length.

How to change it

Change in postgresql.conf or ALTER SYSTEM, then run SELECT pg_reload_conf().

See it in context

Logger (logging collector)

Related parameters

syslog_sequence_numbers syslog_ident log_destination log_parameter_max_length

All Reporting and Logging parameters