ArangoDB v3.13 is under development and not released yet. This documentation is not final and potentially incomplete.
HTTP interface for server logs
Server events and errors are logged depending on the defined log levels for the available log topics
Whether events are logged to a file, syslog, or only an attached terminal depends on the log startup options.
See Log levels for a detailed
description of the FATAL, ERROR, and other levels of log messages.
The permissions required to use the /_admin/log* endpoints depends on the
setting of the --log.api-enabled startup option.
Get the global server logs
Returns fatal, error, warning or info log messages from the server’s global log. The result is a JSON object with the following properties:
- total: the total amount of log entries before pagination
- messages: an array with log messages that matched the criteria
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
Get the global server logs (deprecated)
/_admin/log/entries instead, which provides the same data in a more
intuitive and easier to process format.Returns fatal, error, warning or info log messages from the server’s global log. The result is a JSON object with the attributes described below.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
Get the server log levels
Returns the server’s current log level settings. The result is a JSON object with the log topics being the object keys, and the log levels being the object values.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
withAppenders boolean (default:
false)Set this option to
trueto return the individual log level settings of all log outputs (appenders) as well as theglobalsettings.The response structure is as follows:
{ "global": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, "appenders": { "-": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, "file:///path/to/file": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, ... } }
Set the server log levels
Modifies and returns the server’s current log level settings. The request body must be a JSON string with a log level or a JSON object with the log topics being the object keys and the log levels being the object values.
If only a JSON string is specified as input, the log level is adjusted for the “general” log topic only. If a JSON object is specified as input, the log levels will be set only for the log topic mentioned in the input object, but preserved for every other log topic. To set the log level for all log levels to a specific value, it is possible to hand in the special pseudo log topic “all”.
The result is a JSON object with all available log topics being the object keys, and the adjusted log levels being the object values.
Possible log levels are:
FATAL- Only critical errors are logged after which the arangod process terminates.ERROR- Only errors are logged. You should investigate and fix errors as they may harm your production.WARNING- Errors and warnings are logged. Warnings may be serious application-wise and can indicate issues that might lead to errors later on.INFO- Errors, warnings, and general information is logged.DEBUG- Outputs debug messages used in the development of ArangoDB in addition to the above.TRACE- Logs detailed tracing of operations in addition to the above. This can flood the log. Don’t use this log level in production.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
withAppenders boolean (default:
false)Set this option to
trueto set individual log level settings for log outputs (appenders). The request and response structure is as follows:{ "global": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, "appenders": { "-": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, "file:///path/to/file": { "agency": "INFO", "agencycomm": "INFO", "agencystore": "WARNING", ... }, ... } }Changing the
globalsettings affects all outputs and is the same as setting a log level with this option turned off.
Reset the server log levels
Introduced in: v3.12.1
Revert the server’s log level settings to the values they had at startup, as determined by the startup options specified on the command-line, a configuration file, and the factory defaults.
The result is a JSON object with the log topics being the object keys, and the log levels being the object values.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
Get the structured log settings
Returns the server’s current structured log settings.
The result is a JSON object with the log parameters being the object keys, and
true or false being the object values, meaning the parameters are either
enabled or disabled.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
Set the structured log settings
Modifies and returns the server’s current structured log settings.
The request body must be a JSON object with the structured log parameters
being the object keys and true or false object values, for either
enabling or disabling the parameters.
The result is a JSON object with all available structured log parameters being
the object keys, and true or false being the object values, meaning the
parameter in the object key is either enabled or disabled.
This API can be turned off via the startup option --log.api-enabled. In case
the API is disabled, all requests will be responded to with HTTP 403. If the
API is enabled, accessing it requires admin privileges, or even superuser
privileges, depending on the value of the --log.api-enabled startup option.
Get recent API calls
Get a list of the most recent requests with a timestamp and the endpoint. In cluster deployments, the list contains only those requests that were submitted to the Coordinator you call this endpoint on. This feature is for debugging purposes.
You can control how much memory is used to record API calls with the
--server.api-recording-memory-limit startup option.
You can disable this and the /_admin/server/aql-queries endpoint
with the --log.recording-api-enabled startup option.
Whether API calls are recorded is independently controlled by the
--server.api-call-recording startup option.
The endpoint returns an empty list of calls if turned off.
database-name* string
The name of a database. Which database you use doesn’t matter as long as the user account you authenticate with has at least read access to this database and administrate access to the
_systemdatabase. If--log.recording-api-enabledis set tojwt, you need to use a superuser token to access the endpoint.
curl --header 'accept: application/json' --dump - http://localhost:8529/_admin/server/api-calls
Show output
HTTP/1.1 200 OK
X-Arango-Queue-Time-Seconds: 0.000000
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0
Content-Security-Policy: frame-ancestors 'self'; form-action 'self';
X-Content-Type-Options: nosniff
Server: ArangoDB
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 257
{
"error": false,
"code": 200,
"result": {
"calls": [
{
"timeStamp": "2025-06-11T14:41:53Z",
"requestType": "GET",
"path": "/_admin/server/api-calls",
"database": "_system"
},
{
"timeStamp": "2025-06-11T14:41:51Z",
"requestType": "GET",
"path": "/_api/version",
"database": "myDB"
}
]
}
}
Get recent AQL queries
Get a list of the most recent AQL queries with a timestamp and information about the submitted query. In cluster deployments, the list contains only those queries that were submitted to the Coordinator you call this endpoint on. This feature is for debugging purposes.
You can control how much memory is used to record AQL queries with the
--server.aql-recording-memory-limit startup option.
You can disable this and the /_admin/server/api-calls endpoint
with the --log.recording-api-enabled startup option.
Whether AQL queries are recorded is independently controlled by the
--server.aql-query-recording startup option.
The endpoint returns an empty list of queries if turned off.
database-name* string
The name of a database. Which database you use doesn’t matter as long as the user account you authenticate with has at least read access to this database and administrate access to the
_systemdatabase. If--log.recording-api-enabledis set tojwt, you need to use a superuser token to access the endpoint.
curl --header 'accept: application/json' --dump - http://localhost:8529/_admin/server/aql-queries
Show output
HTTP/1.1 200 OK
X-Arango-Queue-Time-Seconds: 0.000000
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
Expires: 0
Pragma: no-cache
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0, max-age=0, s-maxage=0
Content-Security-Policy: frame-ancestors 'self'; form-action 'self';
X-Content-Type-Options: nosniff
Server: ArangoDB
Connection: Keep-Alive
Content-Type: application/json; charset=utf-8
Content-Length: 353
{
"error": false,
"code": 200,
"result": {
"queries": [
{
"timeStamp": "2025-07-02T16:33:32Z",
"query": "FOR s in @@collection FILTER s.time < @start RETURN s._key",
"database": "_system",
"bindVars": {
"@collection": "_statistics",
"start": 1751470412.3836362
}
},
{
"timeStamp": "2025-07-02T16:26:01Z",
"query": "FOR doc IN coll RETURN doc",
"database": "_system",
"bindVars": {}
}
]
}
}
