Base path:/administration/logsSecurity:@RolesAllowed("eddi-admin") — requires eddi-admin role when OIDC is enabled (QUARKUS_OIDC_TENANT_ENABLED=true). Bypassed in dev mode (OIDC disabled by default).
EDDI provides a built-in log management API for platform-wide observability. It captures all application log records into an in-memory ring buffer and optionally persists them to the database for cross-restart history.
Note: This API provides system-level application logs (JUL/JBoss log records). For conversation message history (user/assistant messages), use the Conversation Log endpoint instead.
Endpoints
Recent Logs (Ring Buffer)
GET /administration/logs
Returns recent log entries from the in-memory ring buffer. These are fast to query but do not survive restarts.
Parameter
Type
Default
Description
agentId
string
—
Filter by agent ID
conversationId
string
—
Filter by conversation ID
level
string
—
Minimum log level (TRACE, DEBUG, INFO, WARN, ERROR). Returns entries at or above this level
limit
integer
200
Maximum number of entries to return
Example:
# Get the 50 most recent WARN+ entries for a specific agentcurl"http://localhost:7070/administration/logs?agentId=my-agent&level=WARN&limit=50"
Response:
[{"timestamp":1711900800000,"level":"WARN","loggerName":"ai.labs.eddi.modules.llm.impl.LlmTask","message":"LLM response was not valid JSON, storing as plain string","environment":"production","agentId":"my-agent","agentVersion":3,"conversationId":"conv-abc123","userId":"user-42","instanceId":"eddi-host-a1b2"}]
Historical Logs (Database)
Returns historical logs from the database. These survive restarts and work across instances. Only logs at or above the configured eddi.logs.db-persist-min-level are persisted.
Parameter
Type
Default
Description
environment
enum
—
Filter by deployment environment (production, test, etc.)
agentId
string
—
Filter by agent ID
agentVersion
integer
—
Filter by agent version
conversationId
string
—
Filter by conversation ID
userId
string
—
Filter by user ID
instanceId
string
—
Filter by EDDI instance ID (useful in multi-instance deployments)
skip
integer
0
Number of entries to skip (pagination)
limit
integer
50
Maximum entries to return
Example:
Live Log Stream (SSE)
Opens a Server-Sent Events (SSE) connection for real-time log tailing. Supports the same filters as the recent logs endpoint.
Parameter
Type
Default
Description
agentId
string
—
Filter by agent ID
conversationId
string
—
Filter by conversation ID
level
string
—
Minimum log level (same semantics as recent logs)
Example:
Each SSE event contains a JSON-serialized LogEntry:
Instance ID
Returns the unique identifier for this EDDI instance. Useful for correlating logs in multi-instance deployments.
Response:
Configuration
All logging configuration lives in application.properties:
Property
Default
Description
eddi.logs.buffer-size
10000
Ring buffer capacity (in-memory entries)
eddi.logs.db-enabled
true
Enable/disable database persistence
eddi.logs.db-flush-interval-seconds
5
How often the async writer flushes to the database
eddi.logs.db-persist-min-level
WARN
Minimum level to persist to the database (TRACE, DEBUG, INFO, WARN, ERROR)
Architecture
The LogCaptureFilter captures every log record (all levels) into the ring buffer for instant query. Only entries meeting the db-persist-min-level threshold are enqueued for async batch persistence to the database.