Skip to main content

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