get_function_logs
Retrieve and filter Cloud Function logs from Firebase Emulator using regex patterns, log levels, function names, and timestamps to debug and monitor execution.
Instructions
Get Firebase function logs. Returns 20 lines by default - use filters (pattern, level, functionName) to narrow results before increasing limit.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| pattern | No | Regex pattern to filter log messages | |
| level | No | Filter by log level | |
| functionName | No | Filter by function name | |
| limit | No | Max log entries to return (default: 20) | |
| since | No | ISO timestamp - only logs after this time |
Implementation Reference
- src/index.ts:293-316 (handler)The handler function `handleGetFunctionLogs` processes the log buffer based on the provided filters and returns the requested number of log entries.
async function handleGetFunctionLogs( pattern?: string, level?: string, functionName?: string, limit = 20, since?: string ) { let filtered = [...logBuffer]; if (since) { const sinceTime = new Date(since).getTime(); filtered = filtered.filter((log) => new Date(log.timestamp).getTime() >= sinceTime); } if (level) { filtered = filtered.filter((log) => log.level.toUpperCase() === level.toUpperCase()); } if (functionName) { filtered = filtered.filter((log) => log.function?.includes(functionName)); } if (pattern) { const regex = new RegExp(pattern, "i"); filtered = filtered.filter((log) => regex.test(log.message)); } return filtered.slice(-limit); } - src/index.ts:230-242 (registration)Tool registration for `get_function_logs` including its input schema.
name: "get_function_logs", description: "Get Firebase function logs. Returns 20 lines by default - use filters (pattern, level, functionName) to narrow results before increasing limit.", inputSchema: { type: "object" as const, properties: { pattern: { type: "string", description: "Regex pattern to filter log messages" }, level: { type: "string", enum: ["DEBUG", "INFO", "WARN", "ERROR"], description: "Filter by log level" }, functionName: { type: "string", description: "Filter by function name" }, limit: { type: "number", description: "Max log entries to return (default: 20)" }, since: { type: "string", description: "ISO timestamp - only logs after this time" }, }, }, }, - src/index.ts:422-430 (handler)Request handler switch-case integration for `get_function_logs`.
case "get_function_logs": result = await handleGetFunctionLogs( args?.pattern as string, args?.level as string, args?.functionName as string, args?.limit as number, args?.since as string ); break;