elliotisms
Version:
reusable atomic functions for the dumb shit i reuse all the time. only about half are jokes.
56 lines (47 loc) • 1.38 kB
JavaScript
// Import required modules
import winston from 'winston';
import { Spinner } from '@topcli/spinner'
import config from './config.js';
class SpinnerTransport extends winston.Transport {
constructor(opts) {
super(opts);
this.spinner = new Spinner({ name: 'line' })
this.spinner.start('started')
}
log(info, callback) {
this.spinner.text = info.message;
if (callback) {
callback();
}
}
}
// Define custom format for logging
const customFormat = winston.format.combine(
winston.format.timestamp({
format: 'YYYY-MM-DD hh:mm:ss A', // Changed to 12-hour format with AM/PM
}),
winston.format.printf((info) => `${info.timestamp} ${info.level}: ${info.message}`)
);
// Create a Winston logger
const logger = winston.createLogger({
// Define the log levels and corresponding colors
levels: winston.config.npm.levels,
format: customFormat,
transports: [
// Console transport for colorized logging
new winston.transports.Console({
level: 'info',
format: winston.format.combine(
winston.format.colorize(),
customFormat
),
}),
// File transport for standard Linux .log format
new winston.transports.File({
filename: config.get('logFile'),
level: 'info',
format: customFormat,
}),
],
});
export default logger;