@hyperfrontend/project-scope/core/logger

logger

Scoped logger built on @hyperfrontend/logging with namespace prefixes, automatic secret sanitization, and a global log level registry.

createScopedLogger(namespace, options?) returns a frozen logger whose output is prefixed with [namespace] and whose metadata objects are recursively scrubbed for sensitive keys (matching patterns like token, key, password, secret, credential, auth, bearer, api_key, private, passphrase). All loggers register themselves so setGlobalLogLevel can flip verbosity across the entire library at once. A default logger instance scoped to project-scope is exported for general use.

API Reference

ƒ Functions

§function

createScopedLogger(namespace: string, options: ScopedLoggerOptions): ScopedLogger

Creates a scoped logger with namespace prefix and optional secret sanitization. All log messages will be prefixed with [namespace] and sensitive metadata values will be automatically redacted.

Parameters

NameTypeDescription
§namespace
string
Logger namespace (e.g., 'project-scope', 'analyze')
§options
ScopedLoggerOptions
Logger configuration options
(default: {})

Returns

ScopedLogger
A configured scoped logger instance

Example

Creating a scoped logger

const logger = createScopedLogger('project-scope')
logger.setLogLevel('debug')

// Basic logging
logger.info('Starting analysis', { path: './project' })

// Sensitive data is automatically redacted
logger.debug('Config loaded', { apiKey: 'secret123' })
// Output: [project-scope] Config loaded {"apiKey":"[REDACTED]"}
§function

getGlobalLogLevel(): LogLevel

Get the current global log level.

Returns

LogLevel
The global log level, or null if not set

Example

Getting current log level

setGlobalLogLevel('debug')
const level = getGlobalLogLevel()
// => 'debug'
§function

resetGlobalLogLevel(): void

Reset the global log level override. Each logger will retain its current level but new loggers will use their default.

Example

Resetting the global log level

setGlobalLogLevel('debug')
// ... perform debugging ...
resetGlobalLogLevel()
// Global override removed, loggers use individual levels
§function

sanitize(obj: unknown): unknown

Sanitizes an object by replacing sensitive values with REDACTED. This function recursively processes nested objects and arrays.

Parameters

NameTypeDescription
§obj
unknown
Object to sanitize

Returns

unknown
New object with sensitive values redacted

Example

Sanitizing sensitive data

const config = { apiKey: 'secret123', endpoint: 'https://api.example.com' }
const safe = sanitize(config)
// => { apiKey: '[REDACTED]', endpoint: 'https://api.example.com' }
§function

setGlobalLogLevel(level: LogLevel): void

Set the log level for all registered scoped loggers. This is useful for enabling verbose logging across the entire library.

Parameters

NameTypeDescription
§level
LogLevel
The log level to set globally

Example

Enabling debug logging globally

import { setGlobalLogLevel } from '@hyperfrontend/project-scope/core'

// Enable debug logging for all project-scope modules
setGlobalLogLevel('debug')

Interfaces

§interface

ScopedLogger

A scoped logger instance with namespace prefix and secret sanitization.

Properties

§debug:(message: string, meta?: object) => void
Log at debug level
§error:(message: string, meta?: object) => void
Log at error level
§getLogLevel:() => LogLevel
Get the current log level
§info:(message: string, meta?: object) => void
Log at info level
§log:(message: string, meta?: object) => void
Log at log level
§setLogLevel:(level: LogLevel) => void
Set the current log level
§warn:(message: string, meta?: object) => void
Log at warn level
§interface

ScopedLoggerOptions

Options for creating a scoped logger.

Properties

§level?:LogLevel
Initial log level. Messages below this level will not be logged.
§sanitizeSecrets?:boolean
Whether to sanitize sensitive data in metadata.

Types

§type

LogLevel

Valid log level values in order of verbosity
type LogLevel = "none" | "error" | "warn" | "log" | "info" | "debug"

Variables

§type

logger

Default logger instance for the project-scope library. Use this for general logging within the library.