pinojs / pino-pretty

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

Pino-pretty doesn't work if timestamp is changed #496

Open augusto-dmh opened 8 months ago

augusto-dmh commented 8 months ago

I was trying to understand why, even with all due properties set and the script ok for running logs formatted with pino-pretty, why the logs were being this way - unformatted:

{"level":"ERROR"",timestamp":"2024-03-12T12:47:54.530Z","status":401,"message":"'authorization' header is required."

After checking if i was doing all the config stuff correctly, i tested taking off all configuration i've put on my logger, then i noticed that with timestamps changed like below, the prettier wouldn't work:

const logger = pino(
  {
    base: undefined,
    level: process.env.LOG_LEVEL,
    redact: {
      paths: ["email", "password"],
      censor: "[RESTRICTED]",
    },
    timestamp: () => `",timestamp":"${new Date(Date.now()).toISOString()}"`,
    formatters: {
      level: (label) => ({ level: label.toUpperCase() }),
    },
  },
  transport,
);

After removing the line with customized timestamp, the log was as should be:

[09:45:33.188] ERROR: status: 401 message: "'authorization' header is required."

So the pino-pretty package apparently doesnt work with a customized timestamp.

mcollina commented 8 months ago

Thanks for reporting! Would you like to send a Pull Request to address this issue? Remember to add unit tests.

augusto-dmh commented 8 months ago

You're welcome! Well, at the moment i haven't studied yet about unit tests, but sooner or later i will and i'll come back here!