Skip to content

docs: document logging configuration - #429

Merged
robfrank merged 1 commit into
mainfrom
docs/logging-configuration
Jul 28, 2026
Merged

docs: document logging configuration#429
robfrank merged 1 commit into
mainfrom
docs/logging-configuration

Conversation

@robfrank

Copy link
Copy Markdown
Contributor

Why

Logging is currently documented only indirectly. The observability page covers the JSON console format and correlation IDs, and the settings reference lists server.logFormat, server.logIncludeTrace and server.logsDirectory, but nothing explains the configuration underneath them: where arcadedb-log.properties is looked up, how per-package levels work, how the log directory is resolved, or how an embedding application routes the engine's logs into its own backend.

What

A new Logging page under How-To > Operations (src/main/asciidoc/how-to/operations/logging.adoc), covering:

  • Config file resolution. The three-step order DefaultLogger actually uses: the java.util.logging.config.file system property (which server.sh anchors to $ARCADEDB_HOME/config/), then a classpath arcadedb-log.properties, then config/arcadedb-log.properties. Plus what the shipped file configures, including the 10 x 100 MB rotation bound.
  • Per-package verbosity. Including the gotcha that raising a logger to FINE does nothing while the handler stays at INFO, and the Ratis noise suppression already present in the shipped file as a worked example.
  • Log directory. ${arcadedb.server.logsDirectory} placeholder resolution, the ARCADEDB_LOG_DIR environment variable forwarded by server.sh/server.bat, and why this matters on a read-only root filesystem (Kubernetes readOnlyRootFilesystem: true).
  • Console format. Cross-referenced to the observability page rather than duplicating the JSON field list, plus arcadedb.installCustomFormatter=false for operators who want the properties file to be the only authority.
  • SLF4J routing when embedding. arcadedb.log.impl=slf4j: bindings for Logback and Log4j2, level mapping, unchanged logger names, the namespaced MDC correlation keys, and the caveat that the SLF4J logger never reads arcadedb-log.properties.
  • Custom Logger implementations.

Also cross-links from the observability logging section, and registers the page in scripts/generate-nav.py so it appears in the Antora sidebar.

Depends on ArcadeData/arcadedb#5361

The Routing through SLF4J when embedding section documents arcadedb.log.impl and Slf4jLogger, which are added by ArcadeData/arcadedb#5361 and are not yet merged. Everything else on the page describes current released behavior.

Since this repo deploys to docs.arcadedb.com on every push to main, please merge #5361 first. If it slips or changes shape, I am happy to split that section out and land the rest now.

The version marker on that section reads _(Available since v26.8.1)_, matching the current main snapshot. Worth a sanity check against the release this actually ships in.

Verification

  • python docs-validator.py -- filenames, anchors and cross-references all pass. The orphaned-pages warning is pre-existing (40 files, unrelated to this change).
  • mvn generate-resources -- single-page HTML builds clean and the page renders in full.
  • bash scripts/migrate.sh && npm run build -- Antora build produces build/site/arcadedb/how-to/operations/logging.html, nav entry lands at nav.adoc:92, zero error-level log entries.

Logging was only documented indirectly: the observability page covers the
JSON console format and correlation IDs, and the settings reference lists
server.logFormat, server.logIncludeTrace and server.logsDirectory, but
nothing explained the configuration underneath them.

Add a Logging page under How-To > Operations covering:

- how config/arcadedb-log.properties is located (the three-step resolution
  order used by DefaultLogger) and what the shipped file configures
- per-package verbosity, including why a logger level alone is not enough
  when the handler level is higher, and the Ratis noise suppression already
  present in the shipped file
- the log directory: ${arcadedb.server.logsDirectory} placeholder resolution,
  the ARCADEDB_LOG_DIR environment variable forwarded by server.sh, and why
  this matters on a read-only root filesystem
- console format, cross-referencing the observability page rather than
  duplicating the JSON field list
- routing the engine through SLF4J when embedding (arcadedb.log.impl=slf4j):
  bindings, level mapping, logger names, MDC correlation keys, and the caveat
  that the SLF4J logger never reads arcadedb-log.properties
- installing a custom Logger implementation

Cross-link from the observability logging section and register the page in
the Antora nav generator.
@mergify

mergify Bot commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

Tick the box to add this pull request to the merge queue (same as @mergifyio queue).

  • Queue this pull request

@robfrank
robfrank merged commit 8d803a5 into main Jul 28, 2026
3 of 4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant