\n \n \n \n \n \n \n \n \n \n
โ† Back to Home

Migrate from Pino

Replace Pino with better-logger in ~15 minutes. Fewer dependencies. Better output.

Why Migrate?

FeaturePinobetter-logger
Dependencies8+0
Bundle size30KB3.8KB
Auto-flow groupingโŒโœ…
Automatic timingManualโœ…
Hierarchical outputโŒโœ…
Browser supportโŒโœ…
TypeScriptโœ…โœ…

Step 1: Install

npm uninstall pino
npm install @better-logger/core

Step 2: Replace Logger Instance

Before (Pino)
import pino from 'pino'
const logger = pino()

logger.info('User created', { email: user.email })
logger.warn('Slow query', { duration: 250 })
logger.error('Payment failed', error)
After (better-logger)
import { better } from '@better-logger/core'

better.log.info('User created', { email: user.email })
better.log.warn('Slow query', { duration: 250 })
better.log.error('Payment failed', error)

Step 3: Replace Child Loggers

Before
const childLogger = logger.child({ requestId })
childLogger.info('Processing request')
After
better.log('Processing request', { requestId })

Step 4: Replace Transports

Before
const logger = pino({
  transport: {
    target: 'pino/file',
    options: { destination: './app.log' }
  }
})
After
better.log.toFile('./app.log', { append: true })

Step 5: Replace Redaction

Before
const logger = pino({ redact: ['password', 'ssn'] })
After
better.log.redact(['password', 'ssn'])

Quick Reference

Pinobetter-logger
logger.info(msg, obj)better.log.info(msg, obj)
logger.warn(msg, obj)better.log.warn(msg, obj)
logger.error(msg, obj)better.log.error(msg, obj)
logger.child(obj)better.log(msg, obj)
pino({ transport })better.log.toFile()
pino({ redact })better.log.redact()
pino({ serializers })Auto-serialized via safeSerialize()

See Also

Migrate from Winston โ†’ Migrate from console.log โ†’