powr-sdk-api
Version:
Shared API core library for PowrStack projects. Zero dependencies - works with Express, Next.js API routes, and other frameworks. All features are optional and install only what you need.
50 lines (45 loc) • 1.28 kB
JavaScript
"use strict";
const winston = require("winston");
const {
S3Transport
} = require("../services/s3");
const {
GCSTransport
} = require("../services/gcs");
// Custom format for logs
const logFormat = winston.format.combine(winston.format.timestamp(), winston.format.errors({
stack: true
}), winston.format.json());
// Create base transports array with console transport
const transports = [new winston.transports.Console()];
// Add S3 transport only in production and if enabled
if (process.env.NODE_ENV === "production") {
if (process.env.LOG_DESTINATION === "s3") {
console.log("Adding S3 transport");
transports.push(new S3Transport({
bucket: process.env.LOG_BUCKET_NAME,
prefix: "logs",
bufferSize: 100,
flushInterval: 5000
}));
}
if (process.env.LOG_DESTINATION === "gcs") {
console.log("Adding GCS transport");
transports.push(new GCSTransport({
bucket: process.env.LOG_BUCKET_NAME,
prefix: "logs",
bufferSize: 100,
flushInterval: 5000
}));
}
}
// Create the logger
const cloudLogger = winston.createLogger({
level: process.env.LOG_LEVEL || "info",
format: logFormat,
defaultMeta: {
service: process.env.LOG_SERVICE_NAME
},
transports
});
module.exports = cloudLogger;