- Process logs are retained telemetry for the sandbox. They are best for browsing, filtering, searching, and debugging after the fact.
- Process output is the buffered stdout, stderr, or combined stream for one tracked process. It is best when your application needs to programmatically wait for or stream a specific process.
Open Process Logs
- Open the Tensorlake Console.
- Go to your project.
- Open Sandboxes.
- Select the sandbox you want to inspect.
- Open the Logs tab.
Logs appear after a process writes to stdout or stderr and the log pipeline has ingested the output. Very recent output can take a short moment to show up in the Console.
Filter Logs
Use the left sidebar or the search bar to narrow the log stream. Common filters:
The process filter uses the stable
processId shown by the sandbox process log metadata, not necessarily the operating-system PID. This matters for managed or restarted processes, where a logical process can restart with a new PID while keeping a stable process identifier for log filtering.
Structured JSON Logs
You can write structured logs by printing one JSON object per line to stdout or stderr. Tensorlake parses JSON log lines, extracts a display message, and stores the remaining JSON fields as structured log attributes. Use this pattern when you want logs that are still readable in the Console, but also carry machine-readable context such as job IDs, tool names, retry counts, model names, durations, or application-specific status.messagebecomes the log message shown in the Console and returned asbody.levelsets the log severity when it is one oftrace,debug,info,warn, orerror.timestampsets the log timestamp when it is parseable.- Other JSON keys are preserved in
logAttributeson the returned log record. - Nested objects and arrays are preserved as structured attributes.
nullvalues are omitted.
message, Tensorlake uses event as the display message when it is present. Event names with underscores are shown with spaces, so "event": "tool_call_started" appears as tool call started.
Today, sandbox log search filters by log level, stable process ID, and text in the extracted
body. Structured attributes are returned with each log record for inspection and downstream processing, but they are not yet separate sandbox log query filters.CLI
Usetl sbx logs to read retained process logs from a sandbox.
--json when you need timestamps, levels, resource attributes, pagination tokens, or other metadata:
tl sbx logs:
nextToken, pass it to read the next page:
Python SDK
UseSandbox.get_logs() when you already have a sandbox object.
SandboxClient directly, pass the sandbox ID:
TypeScript SDK
Usesandbox.getLogs() when you already have a sandbox object.
Debug a Failed Process
A typical debugging flow is:- Open the sandbox and go to Processes to find the command, status, PID, and exit code.
- Go to Logs.
- Select the matching process in the sidebar.
- Add a text search such as
"Traceback","error", or the package, file, or command you were investigating. - Open a log row to inspect the full message and resource attributes.
Query Logs with HTTP
The Console uses the sandbox logs endpoint behind the scenes. You can query the same retained logs over HTTP:1 trace, 2 debug, 3 info, 4 warn, 5 error, and 6 fatal.
List Process Filter Values
To build your own process picker, list the processes that have retained logs for a sandbox:processId with the processId logs query parameter.
When Logs Are Empty
If the Logs tab is empty:- Confirm the sandbox has started a process that writes to stdout or stderr.
- Check that you are viewing the correct project and sandbox ID.
- Wait a short moment for ingestion if the process just wrote output.
- Use the Processes tab or the process output API if you need immediate output from a currently running process.