@arizeai/phoenix-client
Version:
A client for the Phoenix API
63 lines • 2.6 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.noopLogger = void 0;
exports.createLogger = createLogger;
const phoenix_config_1 = require("@arizeai/phoenix-config");
/**
* A logger that does nothing
*/
exports.noopLogger = {
info: () => undefined,
warn: () => undefined,
error: () => undefined,
log: () => undefined,
debug: () => undefined,
table: () => undefined,
};
const VALID_LOG_LEVELS = [
"debug",
"info",
"warn",
"error",
"silent",
];
function isLogLevel(value) {
return VALID_LOG_LEVELS.includes(value);
}
function getLogLevelFromEnvironment() {
const value = (0, phoenix_config_1.getStrFromEnvironment)(phoenix_config_1.ENV_PHOENIX_LOG_LEVEL);
if (value && isLogLevel(value)) {
return value;
}
return "info";
}
/**
* Creates a logger with the given log level, optionally wrapping a custom logger.
* If no level is provided, reads PHOENIX_LOG_LEVEL from the environment, defaulting to "info".
* If a custom logger is provided, it is used as the underlying output target instead of console.
*
* Log level hierarchy (lowest to highest): debug < info < warn < error < silent
* Messages below the configured level are suppressed.
*
* @example
* const logger = createLogger(); // uses PHOENIX_LOG_LEVEL env var, defaults to "info"
* const logger = createLogger({ level: "debug" }); // show all messages including progress
* const logger = createLogger({ level: "silent" }); // suppress all output
* const logger = createLogger({ logger: myWinstonLogger }); // wrap a custom logger
* const logger = createLogger({ level: "warn", logger: myWinstonLogger }); // custom + level filter
*/
function createLogger({ level, logger, } = {}) {
const resolvedLevel = level !== null && level !== void 0 ? level : getLogLevelFromEnvironment();
const levelIndex = VALID_LOG_LEVELS.indexOf(resolvedLevel);
const shouldLog = (l) => VALID_LOG_LEVELS.indexOf(l) >= levelIndex;
const base = logger !== null && logger !== void 0 ? logger : console;
return {
debug: shouldLog("debug") ? (msg) => base.debug(msg) : () => undefined,
info: shouldLog("info") ? (msg) => base.info(msg) : () => undefined,
warn: shouldLog("warn") ? (msg) => base.warn(msg) : () => undefined,
error: shouldLog("error") ? (msg) => base.error(msg) : () => undefined,
log: shouldLog("info") ? (msg) => base.log(msg) : () => undefined,
table: shouldLog("info") ? (data) => base.table(data) : () => undefined,
};
}
//# sourceMappingURL=logger.js.map