@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
stringLogger namespace (e.g., 'project-scope', 'analyze')
§options
ScopedLoggerOptionsLogger 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
unknownObject 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
LogLevelThe 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) => voidLog at debug level
§error:(message: string, meta?: object) => voidLog at error level
§getLogLevel:() => LogLevelGet the current log level
§info:(message: string, meta?: object) => voidLog at info level
§log:(message: string, meta?: object) => voidLog at log level
§setLogLevel:(level: LogLevel) => voidSet the current log level
§warn:(message: string, meta?: object) => voidLog at warn level
§interface

ScopedLoggerOptions

Options for creating a scoped logger.
Properties
§level?:LogLevelInitial log level. Messages below this level will not be logged.
§sanitizeSecrets?:booleanWhether 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.