-
Notifications
You must be signed in to change notification settings - Fork 935
Open
Description
Hi I am using Express Js v 5.x and Pino v 10.1.0 with TypeScript v5.9.3 but seems not to work.
Log.ts
import pino from "pino";
import path from "node:path";
const __dirname = import.meta.dirname;
const logFilePath = path.join(__dirname, "..", "..", "logs", "app.log");
class Log {
private logger: pino.Logger;
constructor() {
const options: pino.LoggerOptions = {
level: process.env.LOG_LEVEL || "info",
/** Rename "msg" to "message" */
messageKey: "message",
/** Rename "err" key to "error" */
errorKey: "error",
serializers: {
error: pino.stdSerializers.err,
},
redact: [],
/** Instead of level to 10, 20, 30, 40 make it show level name like "INFO", "WARN", "ERROR", "FATAL" and rename it to "severity" */
formatters: {
level: (level) => {
return { level: level };
},
},
/** Rename "time" to "timestamp" with UTC timezone format */
timestamp: () => {
return `,"timestamp":"${new Date(Date.now()).toISOString()}"`;
},
};
const transports = pino.transport({
targets: [
{
target: "pino/file",
options: {
destination: logFilePath,
mkdir: true,
},
},
{
target: "pino/file",
options: {
destination: 1,
},
},
],
});
this.logger = pino(options, transports);
}
info(message: string, metadata?: object) {
this.logger.info({ metadata }, message);
}
warn(message: string, metadata?: object) {
this.logger.warn({ metadata }, message);
}
error(error: Error, message?: string, metadata?: object) {
this.logger.error({ error, metadata }, message);
}
fatal(message: string, metadata?: object) {
this.logger.fatal({ metadata }, message);
}
}
export default new Log();
NOTE: When I use only 1 transport configuration ie, to STDOUT or to File path it's working. But fails to write logs to either of them when both are enabled.
Please help me if I am doing something wrong. I am new to TypeScript as well as Pino
Metadata
Metadata
Assignees
Labels
No labels