Package Exports
- @c15t/logger
Readme
@c15t/logger
A lightweight, customizable logging utility for Node.js and TypeScript applications. Designed for use in c15t CLI and backend applications.
Features
- ðĻ Color-coded console output with picocolors
- ð§ Configurable log levels (error, warn, info, debug, success)
- ð Custom log handlers
- ðĄïļ Type-safe with TypeScript
- ð Error logging for Result/ResultAsync types from neverthrow
- ðŊ Console redirection functionality
- ðŠķ Lightweight with minimal dependencies
Installation
pnpm add @c15t/loggerQuick Start
import { createLogger } from '@c15t/logger';
// Create a logger instance
const logger = createLogger({
level: 'info',
appName: 'my-app',
});
// Log messages at different levels
logger.info('Application started');
logger.debug('Debug information', { userId: 123 });
logger.warn('Warning message');
logger.error('Error occurred', new Error('Something went wrong'));
logger.success('Operation completed successfully');Configuration
LoggerOptions
interface LoggerOptions {
/** Whether logging is disabled */
disabled?: boolean;
/** The minimum log level to publish */
level?: 'error' | 'warn' | 'info' | 'debug';
/** Custom log handler function */
log?: (level: LogLevel, message: string, ...args: unknown[]) => void;
/** Custom application name to display in log messages */
appName?: string;
}Advanced Usage
Custom Log Handler
const logger = createLogger({
level: 'info',
appName: 'my-app',
log: (level, message, ...args) => {
// Send logs to external service
sendToLoggingService({ level, message, args });
},
});Extending the Logger
import { extendLogger } from '@c15t/logger';
const baseLogger = createLogger({ level: 'info' });
const extendedLogger = extendLogger(baseLogger, {
http: (message, ...args) => baseLogger.info(`HTTP: ${message}`, ...args),
database: (message, ...args) => baseLogger.info(`DB: ${message}`, ...args),
});
extendedLogger.http('GET /api/users');
extendedLogger.database('Query executed in 10ms');Error Logging with neverthrow
import { logResult, logResultAsync } from '@c15t/logger';
import { ok, err, okAsync } from 'neverthrow';
const result = err(new Error('Something went wrong'));
// Log if the result is an error
logResult(result, logger, 'Operation failed');
// For async results
const asyncResult = okAsync({ data: 'success' });
await logResultAsync(asyncResult, logger, 'Async operation');API Reference
Core Functions
createLogger(options?: LoggerOptions): Logger- Creates a configured logger instancelogger- Default logger instance with standard configurationextendLogger<T>(baseLogger: Logger, extensions: T): ExtendedLogger<T>- Extends a logger with additional methods
Utility Functions
logResult(result, logger, message)- Logs neverthrow Result if it's an errorlogResultAsync(result, logger, message)- Logs neverthrow ResultAsync if it's an errorformatArgs(args)- Formats arguments for displayformatMessage(level, message, args, appName)- Formats a log message with app name and styling
Support
- Join our Discord community
- Open an issue on our GitHub repository
- Visit consent.io and use the chat widget
- Contact our support team via email support@consent.io
Contributing
- We're open to all community contributions!
- Read our Contribution Guidelines
- Review our Code of Conduct
- Fork the repository
- Create a new branch for your feature
- Submit a pull request
- All contributions, big or small, are welcome and appreciated!
Security
If you believe you have found a security vulnerability in c15t, we encourage you to responsibly disclose this and NOT open a public issue. We will investigate all legitimate reports.
Our preference is that you make use of GitHub's private vulnerability reporting feature to disclose potential security vulnerabilities in our Open Source Software. To do this, please visit https://github.com/c15t/c15t/security and click the "Report a vulnerability" button.
License
GNU General Public License v3.0
Built with âĪïļ by the consent.io team