8.4 KiB
@push.rocks/smartlog API Reference
This document provides a detailed reference for all exports and APIs available in the @push.rocks/smartlog package and its submodules.
Core Module (@push.rocks/smartlog
)
The core module provides the main logging functionality.
Classes
Smartlog
Main logger class for creating, managing, and routing logs.
import { Smartlog } from '@push.rocks/smartlog';
const logger = new Smartlog({
logContext: {
company: 'MyCompany',
environment: 'production',
// ...other context properties
},
minimumLogLevel: 'info' // Optional, defaults to 'silly'
});
Constructor Options:
logContext
: Object containing context information about the environmentminimumLogLevel
: Optional minimum log level to process (defaults to 'silly')
Methods:
log(logLevel, message, data?, correlation?)
: Log a message with optional data and correlationincrement(logLevel, message, data?, correlation?)
: Log an increment counteraddLogDestination(destination)
: Add a custom log destinationenableConsole(options?)
: Enable console logging (with optional stdout/stderr capture)createLogGroup(transactionId?)
: Create a log group for related logshandleLog(logPackage)
: Handle a pre-formatted log package
Static Methods:
createForCommitinfo(commitinfo)
: Create a logger with commit information
LogGroup
Groups related logs together for better traceability.
import { Smartlog } from '@push.rocks/smartlog';
const logger = new Smartlog({/*...*/});
const logGroup = logger.createLogGroup('transaction-123');
logGroup.log('info', 'Starting process');
// All logs in this group will share the same transaction ID
Methods:
log(logLevel, message, data?)
: Log a message within this groupincrement(logLevel, message, data?)
: Log an increment within this group
ConsoleLog
Implementation of ILogDestination
that logs to console.
Interfaces Module (@push.rocks/smartlog/interfaces
)
This module provides all type definitions and interfaces used by Smartlog.
Types
-
TLogType
: Available log types'log' | 'increment' | 'gauge' | 'error' | 'success' | 'value' | 'finance' | 'compliance'
-
TLogLevel
: Available log levels'silly' | 'info' | 'debug' | 'note' | 'ok' | 'success' | 'warn' | 'error' | 'lifecycle'
-
TEnvironment
: Available environments'local' | 'test' | 'staging' | 'production'
-
TRuntime
: Available runtime environments'node' | 'chrome' | 'rust' | 'deno' | 'cloudflare_workers'
Interfaces
ILogContext
Metadata about the environment where logging occurs.
interface ILogContext {
commitinfo?: ICommitInfo;
company?: string;
companyunit?: string;
containerName?: string;
environment?: TEnvironment;
runtime?: TRuntime;
zone?: string;
}
ILogCorrelation
Information for correlating related logs.
interface ILogCorrelation {
id: string;
type: 'none' | 'service' | 'build' | 'infrastructure' | 'cdn';
instance?: string;
group?: string;
transaction?: string;
}
ILogPackage<T = unknown>
The standard log package format.
interface ILogPackage<T = unknown> {
timestamp: number;
type: TLogType;
context: ILogContext;
level: TLogLevel;
correlation: ILogCorrelation;
message: string;
data?: T;
}
ILogDestination
Interface for implementing custom log destinations.
interface ILogDestination {
handleLog: (logPackage: ILogPackage) => Promise<void>;
}
Interactive Console Module (@push.rocks/smartlog/source-interactive
)
This module provides interactive console components like spinners and progress bars.
Classes
SmartlogSourceInteractive
Creates interactive spinners for CLI applications.
import { SmartlogSourceInteractive } from '@push.rocks/smartlog/source-interactive';
const spinner = new SmartlogSourceInteractive();
spinner.text('Loading data...');
// Later
spinner.finishSuccess('Data loaded successfully!');
Methods:
text(message)
: Sets the spinner text and starts it if not runningfinishSuccess(message?)
: Completes the spinner with success messagefinishFail(message?)
: Completes the spinner with failure messagesuccessAndNext(message)
: Marks success and starts a new spinnerfailAndNext(message)
: Marks failure and starts a new spinnersetSpinnerStyle(style)
: Sets spinner style ('dots', 'line', 'star', 'simple')setColor(color)
: Sets the spinner colorsetSpeed(ms)
: Sets the animation speed
SmartlogProgressBar
Creates progress bars for CLI applications.
import { SmartlogProgressBar } from '@push.rocks/smartlog/source-interactive';
const bar = new SmartlogProgressBar({
total: 100,
width: 40,
showEta: true
});
bar.update(50); // Update to 50%
bar.increment(10); // Increment by 10 units
bar.complete(); // Complete the progress bar
Constructor Options:
total
: Total number of items/stepswidth
: Width of the bar in characterscomplete
: Character for completed sectionincomplete
: Character for incomplete sectionrenderThrottle
: Minimum time between rendersclear
: Whether to clear the bar on completionshowEta
: Show estimated time remainingshowPercent
: Show percentage completedshowCount
: Show count of items
Methods:
update(value)
: Update progress to a specific valueincrement(value?)
: Increment progress by a value (default: 1)complete()
: Mark the progress bar as completesetColor(color)
: Set the color of the progress bar
File Destination Module (@push.rocks/smartlog/destination-file
)
This module provides a log destination that writes logs to a file.
Classes
SmartlogDestinationFile
Writes logs to a file with timestamps.
import { Smartlog } from '@push.rocks/smartlog';
import { SmartlogDestinationFile } from '@push.rocks/smartlog/destination-file';
const logger = new Smartlog({/*...*/});
const fileDestination = new SmartlogDestinationFile('/absolute/path/to/logfile.log');
logger.addLogDestination(fileDestination);
Constructor Parameters:
filePath
: Absolute path to the log file
Local Destination Module (@push.rocks/smartlog/destination-local
)
This module provides a log destination with colorful formatting for local development.
Classes
DestinationLocal
Formats logs with colors and prefixes for better readability in the console.
import { Smartlog } from '@push.rocks/smartlog';
import { DestinationLocal } from '@push.rocks/smartlog/destination-local';
const logger = new Smartlog({/*...*/});
const localDestination = new DestinationLocal();
logger.addLogDestination(localDestination);
Methods:
handleLog(logPackage)
: Handles a log packagenewLine(lines?)
: Adds empty lines to the consolelogReduced(text, repeatEveryTimes?)
: Logs only when the message changes
DevTools Destination Module (@push.rocks/smartlog/destination-devtools
)
This module provides a log destination that formats logs for browser developer tools.
Classes
SmartlogDestinationDevtools
Formats logs with colors for browser developer tools.
import { Smartlog } from '@push.rocks/smartlog';
import { SmartlogDestinationDevtools } from '@push.rocks/smartlog/destination-devtools';
const logger = new Smartlog({/*...*/});
const devtoolsDestination = new SmartlogDestinationDevtools();
logger.addLogDestination(devtoolsDestination);
ClickHouse Destination Module (@push.rocks/smartlog/destination-clickhouse
)
This module provides a log destination that stores logs in a ClickHouse database.
Classes
SmartlogDestinationClickhouse
Stores logs in a ClickHouse database for analytics and querying.
import { Smartlog } from '@push.rocks/smartlog';
import { SmartlogDestinationClickhouse } from '@push.rocks/smartlog/destination-clickhouse';
const logger = new Smartlog({/*...*/});
const clickhouseDestination = await SmartlogDestinationClickhouse.createAndStart({
host: 'clickhouse.example.com',
port: 8123,
user: 'username',
password: 'password',
database: 'logs_db'
});
logger.addLogDestination(clickhouseDestination);
Static Methods:
createAndStart(options)
: Create and initialize a ClickHouse destination
Methods:
start()
: Initialize the connection to ClickHousehandleLog(logPackage)
: Store a log in ClickHouse