Logger Setup with Winston
A simple setup with winston logger:
const { createLogger, format, transports } = require('winston')
require('winston-daily-rotate-file')
module.exports = (fileName = 'application') => {
const fileLogTransport = new transports.DailyRotateFile({
filename: `logs/${fileName}-%DATE%.log`,
datePattern: 'YYYY-MM-DD',
zippedArchive: true,
maxSize: '20m',
maxFiles: '30d'
})
const consoleTransport = new transports.Console({
level: process.env.LOG_LEVEL,
handleExceptions: false,
json: false,
colorize: true,
format: format.printf(i => `${i.message}`)
})
const logger = createLogger({
level: 'info',
format: format.combine(
format.timestamp({
format: 'YYYY-MM-DD HH:mm:ss'
}),
format.errors({ stack: true }),
format.splat(),
format.json()
),
defaultMeta: { service: 'shopify-app' },
transports: [consoleTransport]
})
if (process.env.NODE_ENV === 'development') {
logger.add(fileLogTransport)
}
return logger()
}