import express from "express";
import { LogIngestorClient } from "@streamlogia/javascript-sdk";
import winston from "winston";
const client = new LogIngestorClient({
apiKey: process.env.LOGINGESTOR_API_KEY,
projectId: process.env.LOGINGESTOR_PROJECT_ID,
source: "my-service",
console: false, // winston handles console output
});
const logger = winston.createLogger({
transports: [
new winston.transports.Console(),
client.createWinstonTransport(
(await import("winston-transport")).default
),
],
});
process.on("SIGTERM", async () => { await client.close(); process.exit(0); });
const app = express();
// Mount once at the top — logs method, path, status, duration, IP, user agent
app.use(client.expressMiddleware());
app.post("/payments", async (req, res) => {
try {
const paymentId = `pay_${Math.random().toString(36).slice(2)}`;
logger.info("payment processed", { paymentId });
res.status(201).json({ paymentId });
} catch (err) {
logger.error("payment failed", { error: err.message });
res.status(500).json({ error: "payment failed" });
}
});