saleor-apps-redis_apl/packages/shared/src/logger.ts
Lukasz Ostrowski b75a66497b
Protect logger from trace and debug in production (#527)
* Protec logger from trace and debug in production

* Better error message
2023-06-01 16:33:25 +02:00

33 lines
775 B
TypeScript

import pino from "pino";
const forbiddenProductionLevels = ["debug", "trace"];
const logLevel = process.env.APP_LOG_LEVEL ?? "silent";
if (process.env.NODE_ENV === "production" && forbiddenProductionLevels.includes(logLevel)) {
throw new Error(
`Production app can only log INFO or higher log level. "${logLevel}" is development only.`
);
process.exit(1);
}
/**
* TODO Set up log drain etc
*/
export const logger = pino({
level: logLevel,
redact: ["token", "apiKey"],
transport:
process.env.NODE_ENV === "development"
? {
target: "pino-pretty",
options: {
colorize: true,
},
}
: undefined,
});
export const createLogger = logger.child.bind(logger);
export type Logger = typeof logger;