Skip to content

Feature Request: add logMeta argument in transportFormatted #318

@HairlessVillager

Description

@HairlessVillager

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🥰

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions