feat: allow disable logger by .env

This commit is contained in:
Methapon Metanipat 2024-08-28 11:08:50 +07:00
parent 5749b85323
commit f4723e4335

View file

@ -1,16 +1,29 @@
import winston from "winston"; import winston from "winston";
import { ElasticsearchTransport } from "winston-elasticsearch"; import { ElasticsearchTransport } from "winston-elasticsearch";
import elasticsearch from "../services/elasticsearch"; import { Client } from "@elastic/elasticsearch";
const logger = winston.createLogger({ const transports: winston.transport[] = [
levels: winston.config.syslog.levels, new winston.transports.Console({
defaultMeta: { serviceName: "jws-sos" }, format: winston.format.combine(
transports: [ winston.format.colorize(),
winston.format.timestamp(),
winston.format.printf(
({ level, timestamp, logData, responseBody, requestBody, ...payload }) =>
`${level} ${timestamp} ${JSON.stringify(Object.assign(payload, logData), null, 4)}`,
),
),
}),
];
if (process.env.LOG_ENABLED !== undefined && process.env.LOG_ENABLED === "true") {
transports.push(
new ElasticsearchTransport({ new ElasticsearchTransport({
level: "info", level: "info",
index: "app-log-test-winston-index", index: "app-log-test-winston-index",
format: winston.format.combine(winston.format.timestamp(), winston.format.json()), format: winston.format.combine(winston.format.timestamp(), winston.format.json()),
client: elasticsearch, client: new Client({
node: `${process.env.ELASTICSEARCH_PROTOCOL}://${process.env.ELASTICSEARCH_HOST}:${process.env.ELASTICSEARCH_PORT}`,
}),
transformer: (payload) => { transformer: (payload) => {
const { logData: additional, ...rest } = payload.meta; const { logData: additional, ...rest } = payload.meta;
return { return {
@ -24,17 +37,13 @@ const logger = winston.createLogger({
}; };
}, },
}), }),
new winston.transports.Console({ );
format: winston.format.combine( }
winston.format.colorize(),
winston.format.timestamp(), const logger = winston.createLogger({
winston.format.printf( levels: winston.config.syslog.levels,
({ level, timestamp, logData, responseBody, requestBody, ...payload }) => defaultMeta: { serviceName: "jws-sos" },
`${level} ${timestamp} ${JSON.stringify(Object.assign(payload, logData), null, 4)}`, transports,
),
),
}),
],
}); });
export default logger; export default logger;