pinojs / pino-pretty

🌲Basic prettifier for Pino log lines
MIT License
1.27k stars 150 forks source link

MinimumLevel doesn't seem to do anything #458

Open VivaLaPanda opened 1 year ago

VivaLaPanda commented 1 year ago

I have this command ts-node src/server.ts | yarn pino-pretty -L info -i req.headers,res.headers,dd But my logs still show this:

2023-09-14 14:08:15.382 web web:dev: [14:08:15.382] DEBUG (58318 on senseofirection.lan):
2023-09-14 14:08:15.382 web web:dev:     query: "SELECT SUM(\"credits\") FROM (SELECT \"public\".\"CreditEntry\".\"credits\" FROM \"public\".\"CreditEntry\" WHERE \"public\".\"CreditEntry\".\"userId\" = $1 OFFSET $2) AS \"sub\""
2023-09-14 14:08:15.382 web web:dev:     duration_ms: 3
2023-09-14 14:08:15.382 web web:dev:     message: "prisma query"
2023-09-14 14:08:15.383 web web:dev: [14:08:15.383] DEBUG (58318 on senseofirection.lan):
2023-09-14 14:08:15.383 web web:dev:     query: "COMMIT"
2023-09-14 14:08:15.383 web web:dev:     duration_ms: 1
2023-09-14 14:08:15.383 web web:dev:     message: "prisma query"
2023-09-14 14:08:15.385 web web:dev: [14:08:15.384] INFO (58318 on senseofirection.lan):
2023-09-14 14:08:15.385 web web:dev:     req: {
2023-09-14 14:08:15.385 web web:dev:       "id": 1,
2023-09-14 14:08:15.385 web web:dev:       "method": "GET",
2023-09-14 14:08:15.385 web web:dev:       "url": "/api/credits/balance",
2023-09-14 14:08:15.385 web web:dev:       "remoteAddress": "::1",
2023-09-14 14:08:15.385 web web:dev:       "remotePort": 61496
2023-09-14 14:08:15.385 web web:dev:     }
2023-09-14 14:08:15.385 web web:dev:     res: {
2023-09-14 14:08:15.385 web web:dev:       "statusCode": 200
2023-09-14 14:08:15.385 web web:dev:     }
2023-09-14 14:08:15.385 web web:dev:     responseTime: 19
2023-09-14 14:08:15.385 web web:dev:     message: "request completed"

I've tried using -L 30 etc, and nothing has worked

jsumners commented 1 year ago

Possible duplicate #455.

wdanilo commented 10 months ago

I was facing the same issue so I started debugging the implementation. It looks like Pino is filtering messages before they go to transports (which makes sense, but it should be clearly stated in the piano-pretty docs as well). So be sure to also set level on logger, and then it will work fine.

mcollina commented 10 months ago

Thanks for reporting! Would you like to send a Pull Request to address this issue?

wdanilo commented 10 months ago

@mcollina but there is no error, everything works as expected. Are you talking about a PR to docs to explain it better?

mcollina commented 10 months ago

yes, exactly!

nijynot commented 9 months ago

I have a case where minimumLevel doesn't seem to do anything when using pino.multistream.

const prettyStream = build({
  minimumLevel: "trace",
  colorize: true,
  messageFormat: (log) => {
    let print = "";
    if (Number.isInteger(log?.index)) print += `(${log?.index}) `;
    if (log?.address) print += `${log?.address}: `;
    print += `${log?.msg}`;

    return print;
  },
  ignore: "hostname,address,index",
});
const fileStream = {
  level: "trace",
  stream: fs.createWriteStream(getLogFileName(), { flags: "a" }),
};
const multistream = pino.multistream([fileStream, prettyStream]);

export const logger = pino({ level: "trace" }, multistream);

So level is set in all cases, but still not working for pino-pretty. It does work for the fileStream, although.

mcollina commented 9 months ago

This should work

const prettyStream = build({
  minimumLevel: "trace",
  colorize: true,
  messageFormat: (log) => {
    let print = "";
    if (Number.isInteger(log?.index)) print += `(${log?.index}) `;
    if (log?.address) print += `${log?.address}: `;
    print += `${log?.msg}`;

    return print;
  },
  ignore: "hostname,address,index",
});
const fileStream = {
  level: "trace",
  stream: fs.createWriteStream(getLogFileName(), { flags: "a" }),
};
const multistream = pino.multistream([fileStream, { level: 'trace', stream: prettyStream }]);

export const logger = pino({ level: "trace" }, multistream);