Log Grouping
Group related log messages together for better organization and readability.
Basic Grouping
log.group(label) and log.end()
import { log } from 'logluxe';
log.group('User Authentication');
log.info('Validating credentials...');
log.info('Checking permissions...');
log.success('User authenticated!');
log.end();
Grouped Output
▼ User Authentication
ℹ Validating credentials...
ℹ Checking permissions...
✔ User authenticated!
🎮 Try Grouping
Collapsed Groups
log.groupCollapsed(label)
Start collapsed by default (useful in browser DevTools):
log.groupCollapsed('Debug Details');
log.debug('Detailed info 1');
log.debug('Detailed info 2');
log.debug('Detailed info 3');
log.end();
Collapsed Group
▶ Debug Details (click to expand)
Nested Groups
Groups can be nested for hierarchical organization:
log.group('Application Startup');
log.group('Configuration');
log.info('Loading config file...');
log.info('Validating settings...');
log.end();
log.group('Database');
log.info('Connecting to PostgreSQL...');
log.info('Running migrations...');
log.success('Database ready');
log.end();
log.group('Server');
log.info('Starting HTTP server...');
log.success('Listening on port 3000');
log.end();
log.end();
Nested Groups
▼ Application Startup
▼ Configuration
ℹ Loading config file...
ℹ Validating settings...
▼ Database
ℹ Connecting to PostgreSQL...
ℹ Running migrations...
✔ Database ready
▼ Server
ℹ Starting HTTP server...
✔ Listening on port 3000
🎮 Try Nested Groups
Practical Examples
API Request Logging
async function handleRequest(req) {
log.group(`${req.method} ${req.url}`);
log.info('Parsing request body...');
const body = await req.json();
log.group('Validation');
log.debug('Checking required fields');
log.debug('Validating data types');
log.success('Validation passed');
log.end();
log.group('Processing');
log.info('Processing request...');
const result = await processRequest(body);
log.success(`Processed in ${result.duration}ms`);
log.end();
log.success(`Response: ${result.status}`);
log.end();
return result;
}
API Request
▼ POST /api/users
ℹ Parsing request body...
▼ Validation
● Checking required fields
● Validating data types
✔ Validation passed
▼ Processing
ℹ Processing request...
✔ Processed in 45ms
✔ Response: 201
🎮 Try API Request
Test Suite Organization
function runTestSuite() {
log.group('Test Suite: User Module');
log.group('Unit Tests');
runTest('should create user', true);
runTest('should validate email', true);
runTest('should hash password', true);
log.end();
log.group('Integration Tests');
runTest('should save to database', true);
runTest('should send welcome email', false);
log.end();
log.group('E2E Tests');
runTest('should complete signup flow', true);
log.end();
log.end();
}
function runTest(name, passed) {
if (passed) {
log.success(`✓ ${name}`);
} else {
log.error(`✗ ${name}`);
}
}
Test Results
▼ Test Suite: User Module
▼ Unit Tests
✔ ✓ should create user
✔ ✓ should validate email
✔ ✓ should hash password
▼ Integration Tests
✔ ✓ should save to database
✖ ✗ should send welcome email
▼ E2E Tests
✔ ✓ should complete signup flow
🎮 Try Test Results
Build Process Logging
async function build() {
log.group('Build Process');
log.group('Compilation');
log.info('Compiling TypeScript...');
await compile();
log.success('Compilation complete');
log.end();
log.group('Bundling');
log.info('Creating bundles...');
log.debug('Entry: src/index.ts');
log.debug('Output: dist/');
await bundle();
log.success('Bundling complete');
log.end();
log.group('Optimization');
log.info('Minifying...');
log.info('Tree shaking...');
await optimize();
log.success('Optimization complete');
log.end();
log.success('Build finished!');
log.end();
}
Build Process
▼ Build Process
▼ Compilation
ℹ Compiling TypeScript...
✔ Compilation complete
▼ Bundling
ℹ Creating bundles...
● Entry: src/index.ts
● Output: dist/
✔ Bundling complete
▼ Optimization
ℹ Minifying...
ℹ Tree shaking...
✔ Optimization complete
✔ Build finished!
🎮 Try Build Process
Next: Performance Logging →