From e4802dd4344852fecaa4f1fff0257bb96f23e1ec Mon Sep 17 00:00:00 2001 From: Devyash Saini Date: Mon, 8 Jun 2026 23:08:33 +0530 Subject: [PATCH 1/2] fix: logger reads SCRAWN_DEBUG and SCRAWN_LOG_FILE from env, graceful fallback on write failure --- packages/scrawn/src/utils/logger.ts | 37 +++++++++++++++++++---------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/scrawn/src/utils/logger.ts b/packages/scrawn/src/utils/logger.ts index 8c3f283..ea89a5f 100644 --- a/packages/scrawn/src/utils/logger.ts +++ b/packages/scrawn/src/utils/logger.ts @@ -2,23 +2,34 @@ import fs from "fs"; import path from "path"; import chalk from "chalk"; import pino from "pino"; -import { ScrawnConfig } from "../config.js"; type LogLevel = "info" | "warn" | "error" | "debug"; -// ensure log file directory exists -const logFilePath = path.resolve(process.cwd(), "scrawn.log"); -fs.mkdirSync(path.dirname(logFilePath), { recursive: true }); +const logLevel = process.env.SCRAWN_DEBUG ? "debug" : "info"; -// create pino instance writing to file -const baseLogger = pino( - { - name: "scrawn", - level: ScrawnConfig.logging.enableDebug ? "debug" : "info", - timestamp: pino.stdTimeFunctions.isoTime, - }, - pino.destination(logFilePath) -); +const defaultLogFile = "scrawn.log"; +const logFileName = process.env.SCRAWN_LOG_FILE || defaultLogFile; +const logFilePath = path.resolve(process.cwd(), logFileName); + +let baseLogger: pino.Logger; +try { + fs.mkdirSync(path.dirname(logFilePath), { recursive: true }); + baseLogger = pino( + { + name: "scrawn", + level: logLevel, + timestamp: pino.stdTimeFunctions.isoTime, + }, + pino.destination(logFilePath) + ); +} catch (err) { + if (process.env.SCRAWN_LOG_FILE) { + console.error( + `[Scrawn] Cannot write to SCRAWN_LOG_FILE="${logFileName}" — file logging disabled` + ); + } + baseLogger = pino({ level: "silent" }); +} export class ScrawnLogger { constructor(private context: string = "Scrawn") {} From 31d98ebe55e0d5c0b0522645792ac33b0e67e1f9 Mon Sep 17 00:00:00 2001 From: Devyash Saini Date: Mon, 8 Jun 2026 23:17:13 +0530 Subject: [PATCH 2/2] fix: parseURLToTarget uses protocol-appropriate port (443 for HTTPS, 80 for HTTP) instead of defaulting to 8069 --- packages/scrawn/src/core/scrawn.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/packages/scrawn/src/core/scrawn.ts b/packages/scrawn/src/core/scrawn.ts index fe0274e..de26ebe 100644 --- a/packages/scrawn/src/core/scrawn.ts +++ b/packages/scrawn/src/core/scrawn.ts @@ -283,7 +283,13 @@ export class Scrawn< private parseURLToTarget(baseURL: string): string { if (baseURL.includes("://")) { const url = new URL(baseURL); - return `${url.hostname}:${url.port || ScrawnConfig.grpc.defaultPort}`; + const protocolPort = + url.protocol === "https:" + ? "443" + : url.protocol === "http:" + ? "80" + : ScrawnConfig.grpc.defaultPort.toString(); + return `${url.hostname}:${url.port || protocolPort}`; } return baseURL.includes(":")