54 lines
1.4 KiB
TypeScript
54 lines
1.4 KiB
TypeScript
import { pino, type LogFn, type Logger } from "pino";
|
|
|
|
export let logLevel = process.env.LOG_LEVEL || "info";
|
|
|
|
const transport = pino.transport({
|
|
targets: [
|
|
{
|
|
target: "pino-pretty",
|
|
options: {
|
|
colorize: true,
|
|
singleLine: true,
|
|
// customPrettifiers: {
|
|
// time: (time) => `🕰 ${time}`,
|
|
// },
|
|
destination: process.stdout.fd,
|
|
},
|
|
},
|
|
{
|
|
target: "./dbTransport.js",
|
|
},
|
|
],
|
|
});
|
|
|
|
const log: Logger = pino(
|
|
{
|
|
level: process.env.LOG_LEVEL || logLevel,
|
|
// formatters: {
|
|
// level: (label) => {
|
|
// return {level: label.toUpperCase()};
|
|
// },
|
|
// },
|
|
//customLevels: {death: 70},
|
|
// removes data from the logs that we dont want to be shown :D
|
|
redact: { paths: ["email", "password"], remove: true },
|
|
},
|
|
transport
|
|
);
|
|
|
|
export const createLog = (
|
|
level: "info" | "fatal" | "error" | "warn" | "debug" | "trace",
|
|
username: string,
|
|
service: string,
|
|
message: string
|
|
) => {
|
|
if (level in log) {
|
|
log[level]({ username, service }, message);
|
|
} else {
|
|
log.warn(
|
|
{ username, service },
|
|
`Invalid log level '${level}', falling back to warn: ${message}`
|
|
);
|
|
}
|
|
};
|