diff --git a/lib/server/logger.ts b/lib/server/logger.ts new file mode 100644 index 0000000..f5f9c02 --- /dev/null +++ b/lib/server/logger.ts @@ -0,0 +1,44 @@ +import winston from "winston"; +const { combine, timestamp, simple, splat, printf, colorize } = winston.format; + +winston.add; + +const fmt = printf(({ timestamp, level, message, meta }) => { + return `${timestamp} [${level}] ------ ${message} ${ + !!meta.durationMs ? "\n (took) " + meta.durationMs + "ms" : "" + }`; +}); + +const cfmt = combine(colorize(), timestamp(), splat(), fmt); + +const loggerTransports: any[] = [ + new winston.transports.Console({ + format: cfmt, + handleExceptions: true, + handleRejections: true, + // json: false + }), +]; + +process.env.NODE_ENV?.toLowerCase() == "development" && + loggerTransports.push( + new winston.transports.File({ + filename: "/var/log/rockfic.debug.log", + level: "debug", + format: combine(timestamp(), splat(), fmt), + handleExceptions: true, + handleRejections: true, + }), + ); + +const logger = winston.createLogger({ + levels: winston.config.syslog.levels, + transports: loggerTransports, + format: cfmt, +}); + +// app.listen(7000, () => logger.debug("fuckyou")) + +// console.log(api.stack) + +export const log = logger;