get_site_logs
Retrieve deployment and site logs for a specific server to review application events and troubleshoot issues.
Instructions
Get deployment/site logs
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | Yes | The ID of the server | |
| site_id | Yes | The ID of the site |
Implementation Reference
- src/tools/sites.ts:120-149 (registration)The get_site_logs tool is registered using server.tool() with the name 'get_site_logs'. It defines the input schema (server_id, site_id) and the handler that calls client.getSiteLogs().
server.tool( "get_site_logs", "Get deployment/site logs", { server_id: z.coerce.number().describe("The ID of the server"), site_id: z.coerce.number().describe("The ID of the site"), }, async ({ server_id, site_id }) => { try { const logs = await client.getSiteLogs(server_id, site_id); return { content: [ { type: "text" as const, text: String(logs || "No logs available"), }, ], }; } catch (error) { return { content: [ { type: "text" as const, text: `Error fetching site logs: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } ); - src/tools/sites.ts:127-149 (handler)The tool handler for get_site_logs: calls client.getSiteLogs(server_id, site_id), returns the logs as text, or an error message on failure.
async ({ server_id, site_id }) => { try { const logs = await client.getSiteLogs(server_id, site_id); return { content: [ { type: "text" as const, text: String(logs || "No logs available"), }, ], }; } catch (error) { return { content: [ { type: "text" as const, text: `Error fetching site logs: ${error instanceof Error ? error.message : String(error)}`, }, ], }; } } ); - src/tools/sites.ts:123-126 (schema)Input schema for get_site_logs using Zod: server_id (coerced number) and site_id (coerced number).
{ server_id: z.coerce.number().describe("The ID of the server"), site_id: z.coerce.number().describe("The ID of the site"), }, - src/client.ts:162-171 (helper)The client helper method PloiClient.getSiteLogs() that makes a GET request to /servers/{serverId}/sites/{siteId}/log and formats the response data into a readable string.
async getSiteLogs(serverId: number, siteId: number): Promise<string> { const response = await this.request<PaginatedResponse<{ id: number; description: string; content: string; type: string | null; created_at: string }>>( "GET", `/servers/${serverId}/sites/${siteId}/log` ); if (!response.data || response.data.length === 0) return "No logs available"; return response.data .map((entry) => `[${entry.created_at}] ${entry.description}\n${entry.content || ""}`) .join("\n---\n"); }