A flexible and configurable logging utility for the Ping Identity JavaScript SDK.
error, warn, info, debug, none)npm install @forgerock/sdk-logger
import { logger } from '@forgerock/sdk-logger';
// Initialize the logger with a specific log level
const log = logger({ level: 'info' });
// Basic usage
log.info('Application started');
log.error('An error occurred:', new Error('Something went wrong'));
// Multiple arguments
log.debug('User data:', { id: '123', name: 'John Doe' });
// Change log level at runtime
log.changeLevel('debug'); // Enable debug logs
log.debug('Debug information is now visible');
log.changeLevel('none'); // Disable all logs
log.error('This error will not be logged');
You can provide your own logger implementation (e.g., Sentry, LogRocket, or another service):
import { logger } from '@forgerock/sdk-logger';
const customLogger = {
error: (...args) => /* custom logging */,
warn: (...args) => /* custom logging */,
info: (...args) => /* custom logging */,
debug: (...args) => /* custom logging */,
};
// Initialize the logger with custom implementation
const log = logger({ level: 'info', custom: customLogger });
// Use the logger
log.error('Critical error:', new Error('Something failed'));
log.info('User logged in successfully');
The logger supports the following log levels (in order of severity):
error - Critical errors that may cause the application to failwarn - Warnings that don't interrupt application flow but require attentioninfo - General information about application flowdebug - Detailed information for debugging purposesnone - No logs will be outputWhen a log level is set, only messages of that level or higher severity will be displayed.
logger({ level, custom? })Initializes a new logger instance.
Parameters:
level: The initial log level ('error', 'warn', 'info', 'debug', or 'none')custom (optional): A CustomLogger object to use instead of the default console implementationReturns: A logger instance with the following methods:
error(...args): Log an error messagewarn(...args): Log a warning messageinfo(...args): Log an informational messagedebug(...args): Log a debug messagechangeLevel(level): Change the current log levelCustomLogger InterfaceDefines the interface for custom logger implementations:
interface CustomLogger {
error: (...args: LogMessage[]) => void;
warn: (...args: LogMessage[]) => void;
info: (...args: LogMessage[]) => void;
debug: (...args: LogMessage[]) => void;
}
type LogMessage = string | number | object;
When a custom logger is provided, all log calls will be delegated to your implementation. If no custom logger is provided, the logger falls back to the browser's native console methods.
Run nx build sdk-logger to build the library.
Run nx test sdk-logger to execute the unit tests via Vitest.