Skip to content

Commit 09743f2

Browse files
committed
feat: logging fixes
1 parent 1c9d623 commit 09743f2

File tree

4 files changed

+37
-59
lines changed

4 files changed

+37
-59
lines changed

src/index.ts

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/
1919
import express, { Request, Response } from 'express';
2020
import dotenv from 'dotenv';
2121
import { randomUUID } from 'node:crypto';
22+
import { safeLog } from './utils/log.js';
2223

2324
dotenv.config();
2425

@@ -933,29 +934,6 @@ function delay(ms: number): Promise<void> {
933934

934935
let isStdioTransport = false;
935936

936-
function safeLog(
937-
level:
938-
| 'error'
939-
| 'debug'
940-
| 'info'
941-
| 'notice'
942-
| 'warning'
943-
| 'critical'
944-
| 'alert'
945-
| 'emergency',
946-
data: any
947-
): void {
948-
try {
949-
// Always log to stderr to avoid relying on MCP logging capability
950-
const message = `[${level}] ${
951-
typeof data === 'object' ? JSON.stringify(data) : String(data)
952-
}`;
953-
console.error(message);
954-
} catch (_) {
955-
// ignore
956-
}
957-
}
958-
959937
// Add retry logic with exponential backoff
960938
async function withRetry<T>(
961939
operation: () => Promise<T>,

src/server-v1.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import FirecrawlApp, {
1616

1717
// import express, { Request, Response } from 'express';
1818
import dotenv from 'dotenv';
19+
import { safeLog } from './utils/log.js';
1920

2021
dotenv.config();
2122

@@ -875,24 +876,7 @@ export function createV1Server() {
875876
return new Promise((resolve) => setTimeout(resolve, ms));
876877
}
877878

878-
function safeLog(
879-
level:
880-
| 'error'
881-
| 'debug'
882-
| 'info'
883-
| 'notice'
884-
| 'warning'
885-
| 'critical'
886-
| 'alert'
887-
| 'emergency',
888-
data: any
889-
): void {
890-
// Always log to stderr to avoid relying on MCP logging capability
891-
const message = `[V1][${level}] ${
892-
typeof data === 'object' ? JSON.stringify(data) : String(data)
893-
}`;
894-
console.error(message);
895-
}
879+
// use shared safeLog via import (scope V1)
896880

897881
// Add retry logic with exponential backoff
898882
async function withRetry<T>(

src/server-v2.ts

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import FirecrawlApp, {
1515

1616
// import express, { Request, Response } from 'express';
1717
import dotenv from 'dotenv';
18+
import { safeLog } from './utils/log.js';
1819

1920
dotenv.config();
2021

@@ -869,24 +870,7 @@ export function createV2Server() {
869870
return new Promise((resolve) => setTimeout(resolve, ms));
870871
}
871872

872-
function safeLog(
873-
level:
874-
| 'error'
875-
| 'debug'
876-
| 'info'
877-
| 'notice'
878-
| 'warning'
879-
| 'critical'
880-
| 'alert'
881-
| 'emergency',
882-
data: any
883-
): void {
884-
// Always log to stderr to avoid relying on MCP logging capability
885-
const message = `[V2][${level}] ${
886-
typeof data === 'object' ? JSON.stringify(data) : String(data)
887-
}`;
888-
console.error(message);
889-
}
873+
// use shared safeLog via import (scope V2 if desired)
890874

891875
// Add retry logic with exponential backoff
892876
async function withRetry<T>(

src/utils/log.ts

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
export type LogLevel =
2+
| 'error'
3+
| 'debug'
4+
| 'info'
5+
| 'notice'
6+
| 'warning'
7+
| 'critical'
8+
| 'alert'
9+
| 'emergency';
10+
11+
export function safeLog(level: LogLevel, data: any, scope?: string): void {
12+
try {
13+
const prefix = scope ? `[${scope}]` : '';
14+
const message = `${prefix}[${level}] ${
15+
typeof data === 'object' ? JSON.stringify(data) : String(data)
16+
}`;
17+
if (level === 'warning') {
18+
console.warn(message);
19+
} else if (
20+
level === 'error' ||
21+
level === 'critical' ||
22+
level === 'alert' ||
23+
level === 'emergency'
24+
) {
25+
console.error(message);
26+
} else {
27+
console.log(message);
28+
}
29+
} catch (_) {
30+
// ignore logging failures
31+
}
32+
}

0 commit comments

Comments
 (0)