You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I want to format the log messages like this (colored level label surrounded by brackets):
[22:37:36.893] [INFO]: Some log message
Previously I was doing it by specifying a customPrettifiers property like this:
customPrettifiers: {level: (_inputData,_key,_log,{ labelColorized })=>`[${labelColorized}]`,// Add brackets around level label}
However, this no longer works for me because now I have multiple transports and I get errors about the function in the config not being serializable.
So my next idea was to use the messageFormat string, like this:
messageFormat: `[{levelLabel}]: {msg}`
As well as adding the "level" property to the ignored fields, so we don't get both of them.
This works, but the level isn't colored.
Now I figured I can just do this in production, where I don't color the levels anyway. I really want the format to stay the same as my old logs in production, but it's not a big deal in development (where I want the colored labels).
However, there's still a small issue. I can't get it to remove the colon after the timestamp. Previously it looked like: [22:37:36.893] [INFO]: Some log message, but specifying to remove the level makes it look like [22:37:36.893]: Some log message, so when I add the level in the messageFormat string it ends up looking like this:
[22:37:36.893]: [INFO]: Some log message
And I can't figure out how to remove the extra colon after the timestamp. It's really not a huge deal, but I want to keep the format the same as my old logs.
I tried removing all fields and adding the timestamp in the message format string like {time} {levelLabel}: {msg}, but then the issue is that it doesn't format the timestamp, it just outputs it as a number. That's another issue I should probably open separately, since the {time} value in the messageFormat string should probably respect the translateTime property.
Context:
The main thing is all my previous logs have the level like [ERROR]: or [INFO]:, and I have my Papertrail searches and alerts set up to observe this format, otherwise it wouldn't be a big deal, and I would just leave the default level format alone.
And yes, I am trying to implement a JSON-based log system now so it shouldn't matter what the log format is. That's why I need the second transport now, since I'm implementing Better Stack (Logtail). But I want to log to both, because just logging JSON encoded string to STDOUT doesn't work well on Heroku, since Heroku's Logplex logger puts the whole message into the message key, and so the level key is put in the wrong place (Better Stack expects it to be the root field). And I still have alerts and stuff in Papertrail (where the Heroku logs are sent) that I want to keep.
If anyone has any suggestions for this whole mess, please let me know. It's been a massive pain trying to get this all to work. I even had to create a custom Logtail transport since the @logtail/pino one wouldn't handle custom level labels.
The text was updated successfully, but these errors were encountered:
You should write your own "prettifier". This module is not intended to be a generic tool for reformatting JSON logs into any other format. It's purpose is to format JSON logs into a human readable format, with some limited customization of that format available.
I want to format the log messages like this (colored level label surrounded by brackets):
Previously I was doing it by specifying a
customPrettifiers
property like this:However, this no longer works for me because now I have multiple transports and I get errors about the function in the config not being serializable.
So my next idea was to use the
messageFormat
string, like this:messageFormat: `[{levelLabel}]: {msg}`
As well as adding the "level" property to the ignored fields, so we don't get both of them.
This works, but the level isn't colored.
Now I figured I can just do this in production, where I don't color the levels anyway. I really want the format to stay the same as my old logs in production, but it's not a big deal in development (where I want the colored labels).
However, there's still a small issue. I can't get it to remove the colon after the timestamp. Previously it looked like:
[22:37:36.893] [INFO]: Some log message
, but specifying to remove the level makes it look like[22:37:36.893]: Some log message
, so when I add the level in themessageFormat
string it ends up looking like this:And I can't figure out how to remove the extra colon after the timestamp. It's really not a huge deal, but I want to keep the format the same as my old logs.
I tried removing all fields and adding the timestamp in the message format string like
{time} {levelLabel}: {msg}
, but then the issue is that it doesn't format the timestamp, it just outputs it as a number. That's another issue I should probably open separately, since the{time}
value in themessageFormat
string should probably respect thetranslateTime
property.Context:
The main thing is all my previous logs have the level like
[ERROR]:
or[INFO]:
, and I have my Papertrail searches and alerts set up to observe this format, otherwise it wouldn't be a big deal, and I would just leave the default level format alone.And yes, I am trying to implement a JSON-based log system now so it shouldn't matter what the log format is. That's why I need the second transport now, since I'm implementing Better Stack (Logtail). But I want to log to both, because just logging JSON encoded string to
STDOUT
doesn't work well on Heroku, since Heroku's Logplex logger puts the whole message into themessage
key, and so thelevel
key is put in the wrong place (Better Stack expects it to be the root field). And I still have alerts and stuff in Papertrail (where the Heroku logs are sent) that I want to keep.If anyone has any suggestions for this whole mess, please let me know. It's been a massive pain trying to get this all to work. I even had to create a custom Logtail transport since the
@logtail/pino
one wouldn't handle custom level labels.The text was updated successfully, but these errors were encountered: