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(":") 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") {}