UNPKG

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
"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;