feature/IO-2998-enhanced-api-logging - Finish
Signed-off-by: Dave Richer <dave@imexsystems.ca>
This commit is contained in:
@@ -5,19 +5,16 @@ const { isString, isEmpty } = require("lodash");
|
||||
|
||||
const createLogger = () => {
|
||||
try {
|
||||
const region = InstanceManager({
|
||||
imex: "ca-central-1",
|
||||
rome: "us-east-2"
|
||||
});
|
||||
|
||||
const isLocal = isString(process.env?.LOCALSTACK_HOSTNAME) && !isEmpty(process.env?.LOCALSTACK_HOSTNAME);
|
||||
|
||||
const logGroupName = isLocal ? "development" : process.env.CLOUDWATCH_LOG_GROUP;
|
||||
|
||||
const winstonCloudwatchTransportDefaults = {
|
||||
logGroupName: logGroupName,
|
||||
awsOptions: {
|
||||
region
|
||||
region: InstanceManager({
|
||||
imex: "ca-central-1",
|
||||
rome: "us-east-2"
|
||||
})
|
||||
},
|
||||
jsonMessage: true
|
||||
};
|
||||
@@ -29,6 +26,25 @@ const createLogger = () => {
|
||||
);
|
||||
}
|
||||
|
||||
const levelFilter = (levels) => {
|
||||
return winston.format((info) => {
|
||||
if (Array.isArray(levels)) {
|
||||
return levels.includes(info.level) ? info : false;
|
||||
} else {
|
||||
return info.level === levels ? info : false;
|
||||
}
|
||||
})();
|
||||
};
|
||||
|
||||
const createProductionTransport = (level, logStreamName, filters) => {
|
||||
return new WinstonCloudWatch({
|
||||
level,
|
||||
logStreamName: logStreamName || level,
|
||||
format: levelFilter(filters || level),
|
||||
...winstonCloudwatchTransportDefaults
|
||||
});
|
||||
};
|
||||
|
||||
const getDevelopmentTransports = () => [
|
||||
new winston.transports.Console({
|
||||
level: "silly",
|
||||
@@ -47,21 +63,10 @@ const createLogger = () => {
|
||||
];
|
||||
|
||||
const getProductionTransports = () => [
|
||||
new WinstonCloudWatch({
|
||||
level: "error",
|
||||
logStreamName: "errors",
|
||||
...winstonCloudwatchTransportDefaults
|
||||
}),
|
||||
new WinstonCloudWatch({
|
||||
level: "warn",
|
||||
logStreamName: "warn",
|
||||
...winstonCloudwatchTransportDefaults
|
||||
}),
|
||||
new WinstonCloudWatch({
|
||||
level: "debug",
|
||||
logStreamName: "debug",
|
||||
...winstonCloudwatchTransportDefaults
|
||||
})
|
||||
createProductionTransport("error"),
|
||||
createProductionTransport("warn"),
|
||||
createProductionTransport("info"),
|
||||
createProductionTransport("silly", "debug", ["http", "verbose", "debug", "silly"])
|
||||
];
|
||||
|
||||
const winstonLogger = winston.createLogger({
|
||||
@@ -72,19 +77,27 @@ const createLogger = () => {
|
||||
: [...getDevelopmentTransports(), ...getProductionTransports()]
|
||||
});
|
||||
|
||||
return (message, type, user, record, object) => {
|
||||
const log = (message, type, user, record, meta) => {
|
||||
winstonLogger.log({
|
||||
level: type.toLowerCase(),
|
||||
message: message,
|
||||
user: user,
|
||||
record: record,
|
||||
meta: object
|
||||
message,
|
||||
user,
|
||||
record,
|
||||
meta
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
log,
|
||||
logger: winstonLogger
|
||||
};
|
||||
} catch (e) {
|
||||
console.error("Logger setup failed", e);
|
||||
return () => {}; // Return a no-op function in case of failure
|
||||
console.error("Error setting up enhanced Logger, defaulting to console.: " + e?.message || "");
|
||||
return {
|
||||
log: console.log,
|
||||
logger: console.log
|
||||
};
|
||||
}
|
||||
};
|
||||
|
||||
module.exports = { log: createLogger() };
|
||||
module.exports = createLogger();
|
||||
|
||||
Reference in New Issue
Block a user