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

Migrate from Winston

Replace Winston with better-logger in ~20 minutes. 20x fewer dependencies. 26x smaller bundle.

Why Migrate?

FeatureWinstonbetter-logger
Dependencies20+0
Bundle size100KB3.8KB
Auto-flow groupingโŒโœ…
Automatic timingManualโœ…
Hierarchical outputโŒโœ…
Browser supportโŒโœ…
Zero configโŒโœ…

Step 1: Install

npm uninstall winston
npm install @better-logger/core

Step 2: Replace Logger Instance

Before (Winston)
import winston from 'winston'

const logger = winston.createLogger({
  level: 'info',
  format: winston.format.json(),
  transports: [
    new winston.transports.File({ filename: 'error.log', level: 'error' }),
    new winston.transports.File({ filename: 'combined.log' })
  ]
})
After (better-logger)
import { better } from '@better-logger/core'

// Zero configuration needed
better.log.toFile('error.log', { append: true })
better.log.toFile('combined.log', { append: true })

Step 3: Replace Logging Calls

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

Step 4: Replace Transports

Before
const logger = winston.createLogger({
  transports: [
    new winston.transports.Console(),
    new winston.transports.File({ filename: 'app.log' }),
    new winston.transports.Http({ url: 'https://logs.example.com' })
  ]
})
After
better.log.toFile('app.log', { append: true })
better.log.toHttp('https://logs.example.com')

Step 5: Replace Formats

Before
const logger = winston.createLogger({
  format: winston.format.combine(
    winston.format.timestamp(),
    winston.format.json()
  )
})
After
// Auto-formatted with timing and structure
// No format configuration needed

Step 6: Express Integration

Before
const expressWinston = require('express-winston')
app.use(expressWinston.logger({
  winstonInstance: logger
}))
After
const { betterLogger } = require('@better-logger/express')
app.use(betterLogger())

Quick Reference

Winstonbetter-logger
logger.info(msg, meta)better.log.info(msg, meta)
logger.warn(msg, meta)better.log.warn(msg, meta)
logger.error(msg, meta)better.log.error(msg, meta)
winston.transports.Filebetter.log.toFile()
winston.transports.Httpbetter.log.toHttp()
winston.format.*Auto-formatted
winston.createLogger()Zero config

๐Ÿ’ก Tip: Winston requires complex configuration. better-logger works immediately with zero config. Add transports only when needed.

See Also

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