\n \n \n \n \n \n \n \n \n \n
Replace Winston with better-logger in ~20 minutes. 20x fewer dependencies. 26x smaller bundle.
| Feature | Winston | better-logger |
|---|---|---|
| Dependencies | 20+ | 0 |
| Bundle size | 100KB | 3.8KB |
| Auto-flow grouping | โ | โ |
| Automatic timing | Manual | โ |
| Hierarchical output | โ | โ |
| Browser support | โ | โ |
| Zero config | โ | โ |
npm uninstall winston
npm install @better-logger/core
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' })
]
})
import { better } from '@better-logger/core'
// Zero configuration needed
better.log.toFile('error.log', { append: true })
better.log.toFile('combined.log', { append: true })
logger.info('User created', { email: user.email })
logger.warn('Slow query', { duration: 250 })
logger.error('Payment failed', error)
better.log.info('User created', { email: user.email })
better.log.warn('Slow query', { duration: 250 })
better.log.error('Payment failed', error)
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' })
]
})
better.log.toFile('app.log', { append: true })
better.log.toHttp('https://logs.example.com')
const logger = winston.createLogger({
format: winston.format.combine(
winston.format.timestamp(),
winston.format.json()
)
})
// Auto-formatted with timing and structure
// No format configuration needed
const expressWinston = require('express-winston')
app.use(expressWinston.logger({
winstonInstance: logger
}))
const { betterLogger } = require('@better-logger/express')
app.use(betterLogger())
| Winston | better-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.File | better.log.toFile() |
winston.transports.Http | better.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.