How to set file name for log file using Winston and S3-streamlogger from nodejs server to aws s3

71 Views Asked by At

I tried by setting the 'filename' variable, but it didn't work, and the file uploaded to S3 has the format `timestamp+branch+hostname.log."

const { createLogger, transports, format } = require('winston');
const { S3StreamLogger } = require('s3-streamlogger');
const AWS = require('aws-sdk');
require("dotenv").config();

const getLogFileName = (level) => {
  return `server_${level}.log`;
};

const s3stream = new S3StreamLogger({
  bucket: process.env.AWS_BUCKET_NAME,
  accessKeyId: process.env.AWS_ACCESS_KEY_ID,
  secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY,
  region: process.env.AWS_REGION,
  folder: "logs",
  filename: "logs/server.log",
});

const customerLogger = createLogger({
  transports: [
    new transports.File({
      filename: 'app/logs/server.log',
      level: 'info',
      format: format.combine(format.timestamp(), format.json()),
    }),
    new transports.File({
      filename: 'app/logs/server_error.log',
      level: 'error',
      format: format.combine(format.timestamp(), format.json()),
    }),
    new transports.File({
      filename: 'app/logs/server_warning.log',
      level: 'warn',
      format: format.combine(format.timestamp(), format.json()),
    }),
    new transports.Stream({
      stream: s3stream,
    }),
  ],
});

module.exports = customerLogger;

I'm really not sure how to solve this issue as there isn't too much documentation for the s3-streamlogger library. I'm hoping for some help.

0

There are 0 best solutions below