Skip to content

Multiple transports not working in v10.1.0 #2333

@channaveer

Description

@channaveer

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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions