remove log util
This commit is contained in:
12
src/index.ts
12
src/index.ts
@@ -14,7 +14,6 @@ import {
|
|||||||
import { CONFIG_FILE } from "./constants";
|
import { CONFIG_FILE } from "./constants";
|
||||||
import { createStream } from 'rotating-file-stream';
|
import { createStream } from 'rotating-file-stream';
|
||||||
import { HOME_DIR } from "./constants";
|
import { HOME_DIR } from "./constants";
|
||||||
import { configureLogging } from "./utils/log";
|
|
||||||
import { sessionUsageCache } from "./utils/cache";
|
import { sessionUsageCache } from "./utils/cache";
|
||||||
import {SSEParserTransform} from "./utils/SSEParser.transform";
|
import {SSEParserTransform} from "./utils/SSEParser.transform";
|
||||||
import {SSESerializerTransform} from "./utils/SSESerializer.transform";
|
import {SSESerializerTransform} from "./utils/SSESerializer.transform";
|
||||||
@@ -63,8 +62,6 @@ async function run(options: RunOptions = {}) {
|
|||||||
await cleanupLogFiles();
|
await cleanupLogFiles();
|
||||||
const config = await initConfig();
|
const config = await initConfig();
|
||||||
|
|
||||||
// Configure logging based on config
|
|
||||||
configureLogging(config);
|
|
||||||
|
|
||||||
let HOST = config.HOST || "127.0.0.1";
|
let HOST = config.HOST || "127.0.0.1";
|
||||||
|
|
||||||
@@ -139,6 +136,15 @@ async function run(options: RunOptions = {}) {
|
|||||||
},
|
},
|
||||||
logger: loggerConfig,
|
logger: loggerConfig,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Add global error handlers to prevent the service from crashing
|
||||||
|
process.on("uncaughtException", (err) => {
|
||||||
|
server.log.error("Uncaught exception:", err);
|
||||||
|
});
|
||||||
|
|
||||||
|
process.on("unhandledRejection", (reason, promise) => {
|
||||||
|
server.log.error("Unhandled rejection at:", promise, "reason:", reason);
|
||||||
|
});
|
||||||
// Add async preHandler hook for authentication
|
// Add async preHandler hook for authentication
|
||||||
server.addHook("preHandler", async (req, reply) => {
|
server.addHook("preHandler", async (req, reply) => {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
import fs from "node:fs";
|
|
||||||
import path from "node:path";
|
|
||||||
import { HOME_DIR } from "../constants";
|
|
||||||
|
|
||||||
const LOG_FILE = path.join(HOME_DIR, "claude-code-router.log");
|
|
||||||
|
|
||||||
// Ensure log directory exists
|
|
||||||
if (!fs.existsSync(HOME_DIR)) {
|
|
||||||
fs.mkdirSync(HOME_DIR, { recursive: true });
|
|
||||||
}
|
|
||||||
|
|
||||||
// Global variable to store the logging configuration
|
|
||||||
let isLogEnabled: boolean | null = null;
|
|
||||||
let logLevel: string = "info";
|
|
||||||
|
|
||||||
// Function to configure logging
|
|
||||||
export function configureLogging(config: { LOG?: boolean; LOG_LEVEL?: string }) {
|
|
||||||
isLogEnabled = config.LOG !== false; // Default to true if not explicitly set to false
|
|
||||||
logLevel = config.LOG_LEVEL || "debug";
|
|
||||||
}
|
|
||||||
|
|
||||||
export function log(...args: any[]) {
|
|
||||||
// If logging configuration hasn't been set, default to enabled
|
|
||||||
if (isLogEnabled === null) {
|
|
||||||
isLogEnabled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!isLogEnabled) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
const timestamp = new Date().toISOString();
|
|
||||||
const logMessage = `[${timestamp}] ${
|
|
||||||
Array.isArray(args)
|
|
||||||
? args
|
|
||||||
.map((arg) =>
|
|
||||||
typeof arg === "object" ? JSON.stringify(arg) : String(arg)
|
|
||||||
)
|
|
||||||
.join(" ")
|
|
||||||
: ""
|
|
||||||
}\n`;
|
|
||||||
|
|
||||||
// Append to log file
|
|
||||||
fs.appendFileSync(LOG_FILE, logMessage, "utf8");
|
|
||||||
}
|
|
||||||
@@ -4,7 +4,6 @@ import {
|
|||||||
Tool,
|
Tool,
|
||||||
} from "@anthropic-ai/sdk/resources/messages";
|
} from "@anthropic-ai/sdk/resources/messages";
|
||||||
import { get_encoding } from "tiktoken";
|
import { get_encoding } from "tiktoken";
|
||||||
import { log } from "./log";
|
|
||||||
import { sessionUsageCache, Usage } from "./cache";
|
import { sessionUsageCache, Usage } from "./cache";
|
||||||
|
|
||||||
const enc = get_encoding("cl100k_base");
|
const enc = get_encoding("cl100k_base");
|
||||||
@@ -94,11 +93,8 @@ const getUseModel = async (
|
|||||||
(lastUsageThreshold || tokenCountThreshold) &&
|
(lastUsageThreshold || tokenCountThreshold) &&
|
||||||
config.Router.longContext
|
config.Router.longContext
|
||||||
) {
|
) {
|
||||||
log(
|
req.log.info(
|
||||||
"Using long context model due to token count:",
|
`Using long context model due to token count: ${tokenCount}, threshold: ${longContextThreshold}`
|
||||||
tokenCount,
|
|
||||||
"threshold:",
|
|
||||||
longContextThreshold
|
|
||||||
);
|
);
|
||||||
return config.Router.longContext;
|
return config.Router.longContext;
|
||||||
}
|
}
|
||||||
@@ -122,12 +118,12 @@ const getUseModel = async (
|
|||||||
req.body.model?.startsWith("claude-3-5-haiku") &&
|
req.body.model?.startsWith("claude-3-5-haiku") &&
|
||||||
config.Router.background
|
config.Router.background
|
||||||
) {
|
) {
|
||||||
log("Using background model for ", req.body.model);
|
req.log.info(`Using background model for ${req.body.model}`);
|
||||||
return config.Router.background;
|
return config.Router.background;
|
||||||
}
|
}
|
||||||
// if exits thinking, use the think model
|
// if exits thinking, use the think model
|
||||||
if (req.body.thinking && config.Router.think) {
|
if (req.body.thinking && config.Router.think) {
|
||||||
log("Using think model for ", req.body.thinking);
|
req.log.info(`Using think model for ${req.body.thinking}`);
|
||||||
return config.Router.think;
|
return config.Router.think;
|
||||||
}
|
}
|
||||||
if (
|
if (
|
||||||
@@ -167,7 +163,7 @@ export const router = async (req: any, _res: any, context: any) => {
|
|||||||
event
|
event
|
||||||
});
|
});
|
||||||
} catch (e: any) {
|
} catch (e: any) {
|
||||||
log("failed to load custom router", e.message);
|
req.log.error(`failed to load custom router: ${e.message}`);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!model) {
|
if (!model) {
|
||||||
@@ -175,7 +171,7 @@ export const router = async (req: any, _res: any, context: any) => {
|
|||||||
}
|
}
|
||||||
req.body.model = model;
|
req.body.model = model;
|
||||||
} catch (error: any) {
|
} catch (error: any) {
|
||||||
log("Error in router middleware:", error.message);
|
req.log.error(`Error in router middleware: ${error.message}`);
|
||||||
req.body.model = config.Router!.default;
|
req.body.model = config.Router!.default;
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
|||||||
Reference in New Issue
Block a user