tslog icon indicating copy to clipboard operation
tslog copied to clipboard

Feature Request: add `logMeta` argument in `transportFormatted`

Open HairlessVillager opened this issue 8 months ago • 0 comments

Description / Use Case for a Feature

I want to use different log level in console e.g. console.error | warn | info, and your docs gives a example:

const logger = new Logger({
  type: "pretty",
  overwrite: {
    transportFormatted: (logMetaMarkup, logArgs, logErrors) => {
      // Send different log levels to appropriate console methods
      const logLevel = logMetaMarkup.trim().split("\t")[1]; // Extract log level from the markup
      switch (logLevel) {
        case "WARN":
          console.warn(logMetaMarkup, ...logArgs, ...logErrors);
          break;
        case "ERROR":
        case "FATAL":
          console.error(logMetaMarkup, ...logArgs, ...logErrors);
          break;
        case "INFO":
          console.info(logMetaMarkup, ...logArgs, ...logErrors);
          break;
        case "DEBUG":
        case "TRACE":
        case "SILLY":
        default:
          console.log(logMetaMarkup, ...logArgs, ...logErrors);
          break;
      },
  },
});

, which use string operation to know which log level it is.

Obviously, a more elegant way is to add a logMeta parameter to the transportFormatted function, so we can write it like this:

const logger = new Logger({
  type: "pretty",
  overwrite: {
    transportFormatted: (logMeta, logMetaMarkup, logArgs, logErrors) => {
      const logLevel = logMeta.logLevelName;
      switch (logLevel) {
        // ...
      },
  },
});

How about it? I'd like to help implement this feature🥰

HairlessVillager avatar Apr 24 '25 08:04 HairlessVillager