Zylon supports internal log storage and external log delivery through syslog and HTTP.
Syslog delivery is intended for SIEM applications and log collectors that accept syslog or CEF events.
HTTP delivery is intended for structured ingestion endpoints, cloud log destinations, and customer-managed collection pipelines.
Delivery is asynchronous.
With failurePolicy: "drop", delivery is designed to stay off the critical request path when queues are full.
Delivered events can be filtered by action patterns and organization IDs.
Stored logs stay in the customer’s Zylon deployment unless external log delivery through syslog or HTTP is enabled.
Configure these settings through the Zylon Helm values YAML. The chart maps values to backend runtime settings internally; customer configuration should use the YAML keys shown here.For governance, auditability, EU AI Act traceability support, evidence preservation, and retention guidance, see Auditability & AI Governance: Logging, Evidence, and SIEM Delivery. For manual log retrieval, see Backoffice API: Logging.
SIEM applications, syslog collectors, and CEF collectors
HTTP
logging.delivery.http.enabled: true
canonical_json
HTTP collectors, ingestion gateways, and cloud log destinations
Syslog and HTTP delivery can be enabled at the same time. When both are enabled, Zylon dispatches matching logs to both destinations. Filters, failure policy, queue, and batch settings are configured separately for each delivery method but follow the same behavior.
Internal log cleanup is controlled by the cleanup scheduler under zylonBackend.scheduler.cleanup.Scheduler settings:
Key
Default
Values
Description
enabled
false
true, false
Enables the cleanup scheduler.
cron
0 3 * * *
cron expression
Cleanup schedule. Shared with hard delete cleanup.
timezone
UTC
time zone
Time zone used by the cleanup schedule. Shared with hard delete cleanup. If the runtime setting is omitted outside Helm, the backend uses the server JVM time zone.
Under logging:
Key
Default
Values
Description
enabled
false
true, false
Enables stored log cleanup.
deleteAfterDays
180
integer days
Deletes stored log records older than this threshold.
External collectors such as SIEM platforms, syslog receivers, HTTP collectors, and data lakes have independent retention settings.
Stored log cleanup is off by default. The 180 day value applies only after both the cleanup scheduler and stored log cleanup are enabled.
Log retention cleanup uses the same cleanup cron and timezone settings as hard delete cleanup. Review Hard delete cron configuration before changing the shared cleanup schedule.
Syslog delivery sends formatted log records to a socket collector over TCP, TLS, or UDP.Use rfc5424_json for structured syslog pipelines. Use cef when the collector has a native CEF input.
Format
Description
Use when
rfc5424_json
RFC 5424 syslog with a JSON envelope in the message body. The schema value is zylon.rfc5424_json.v1.
You want structured syslog events for SIEM/search pipelines.
cef
Raw CEF event format. The CEF extension includes a raw structured record under cs1.
Your collector has a native CEF input.
Transport
Behavior
tls
Persistent TLS socket. Supports certificate verification and custom CA file.
tcp
Persistent TCP socket without TLS.
udp
Datagram delivery. One event is sent per datagram; stream framing is ignored.
UDP is best-effort. It does not use stream framing and does not retry the current batch on write failure.
HTTP delivery sends structured JSON records to an HTTP collector. Use it for ingestion gateways, data lakes, or pipelines that transform Zylon’s canonical payload downstream.The supported HTTP format is canonical_json. The schema value is zylon.canonical_json.v1.HTTP supports POST, optional bearer authentication, static headers using Header=Value or Header: Value, retries for network errors and HTTP 5xx responses, and no retry for HTTP 4xx client errors.Vendor-specific transformations should happen at the collector or ingestion layer.
Static outbound headers. Supports Header=Value and Header: Value.
Optional HTTP keys
Optional authentication, filter, delivery, queue, and batch settings are configured under their matching nested blocks in logging.delivery.http.Under auth:
Key
Default
Values
Description
type
none
none, bearer
Authentication mode.
token
empty
string
Required when type is bearer. Sent as Authorization: Bearer <token>.
Under filters:
Key
Default
Values
Description
includeActionPatterns
[]
wildcard list
If non-empty, only matching action names are delivered.
excludeActionPatterns
[]
wildcard list
Matching action names are excluded before include filters are evaluated.
includeOrgIds
[]
organization UUID list
If non-empty, only logs for matching organization IDs are delivered.
Under delivery:
Key
Default
Values
Description
timeoutSeconds
10
positive integer
HTTP connect, read, and write timeout.
failurePolicy
drop
drop, block
Queue behavior when the async queue is full.
Under delivery.retry:
Key
Default
Values
Description
enabled
true
true, false
Enables HTTP retry.
maxAttempts
3
positive integer
Maximum request attempts when retry is enabled.
backoffSeconds
3
non-negative integer
Sleep between retry attempts.
Under delivery.queue:
Key
Default
Values
Description
maxEvents
10000
positive integer
Async delivery queue capacity.
Under delivery.batch:
Key
Default
Values
Description
maxEvents
25
positive integer
Maximum events per HTTP request. Multi-event batches are sent as a JSON array.
maxDelayMillis
250
positive integer
Maximum time to wait before flushing a partial batch.
Syslog and HTTP delivery use the same filter behavior under filters.
Key
Default
Values
Description
includeActionPatterns
[]
wildcard list
If non-empty, only matching action names are delivered. * matches any number of characters. Matching is case-sensitive and covers the full action string.
excludeActionPatterns
[]
wildcard list
Matching action names are excluded before include filters are evaluated.
includeOrgIds
[]
organization UUID list
If non-empty, only logs for matching organization IDs are delivered. Logs without organization_id are not delivered.
Keep all Zylon backend nodes synchronized to a trusted time source such as NTP. The Helm chart sets the cleanup scheduler timezone to UTC by default; if the runtime setting is omitted outside Helm, the backend uses the server JVM time zone. Log records should be reviewed in UTC for cross-system forensic correlation.Treat changes to logging.storage, logging.delivery, filters, retention, and collector destinations as auditable deployment changes. Capture approvals and diffs in GitOps, change management, Kubernetes audit logs, or the infrastructure audit system used by the customer.Delivered payload schemas use markers such as zylon.rfc5424_json.v1 and zylon.canonical_json.v1. SIEM parsers should route by schema marker and validate parser compatibility during upgrades.
Maximum events that can wait in the async delivery queue, or maximum events per delivery batch when set under batch. Larger queues absorb bursts but use more memory; larger batches can improve throughput but can increase delay.
maxDelayMillis
Maximum time before a partial batch is flushed. Smaller values reduce latency.
drainTimeoutMillis
Time allowed to drain queued batch entries during shutdown.
For syslog over UDP, the maxEvents value under delivery.batch is forced to 1, because one datagram carries one event. For HTTP, multi-event batches are delivered as a JSON array.
Queue and batching settings already have production defaults. If your HTTP destination, SIEM, or log collector does not require specific values, leave the defaults unchanged. Customize them only when your environment needs different throughput, latency, or burst handling.
TCP and TLS syslog delivery lazily opens a socket, reuses it, and retries the current batch once on a fresh connection after write failure. If retry fails, the reconnect backoff window applies.
Setting
Description
enabled
Enables reconnect after socket failure. If disabled, future reconnect attempts stop after the first failure until process restart or appender reset.
backoffSeconds
Time before another connect attempt after failure.
Enables TLS certificate verification and hostname verification for syslog TLS.
caFile
Path to a readable CA file used to trust a private collector CA when verification is enabled.
Local or lab deployments may disable certificate verification. Production deployments should enable certificate verification when the collector has a trusted certificate path. Use caFile under tls when the collector uses a private CA.
Trigger an API action that emits a log, such as project creation or API token creation.
Query the collector.
Confirm the expected event, action, log.id, and actor fields appear.
Check backend logs for delivery warnings.
Validation queries depend on your collector. Use whichever search or inspection tool your destination provides, then confirm one of these payload markers appears:
zylon.rfc5424_json.v1 for RFC 5424 JSON syslog payloads.
CEF:0|Zylon for CEF payloads.
zylon.canonical_json.v1 for HTTP payloads.
A known action such as ws.project.create.
For reconnect testing, stop the collector, trigger events, restart the collector, then confirm new events arrive after the reconnect backoff.