Как вы регистрируете и объект и строку на одной строке с Уинстоном? - PullRequest
0 голосов
/ 10 декабря 2018

У меня есть приложение create response, и часто во время отладки я люблю регистрировать объекты и строки вместе.Я использую Winston 3.1.0, и у меня есть созданный класс логгера, который использует Winston следующим образом:

import * as winston from 'winston';

const format = winston.format;
const level = (environment.name === 'prod') ? 'warning' : 'debug';

export default class MyLogger {
   public source:string;
   public logger: winston.Logger;

   constructor(src:string){
        this.source = src;

    this.logger = winston.createLogger({
        format: format.combine(
            format.splat(),
            format.simple(),
            format.colorize(),
            format.label({label: `[MyReactApp: ${this.source}]`}),
            format.timestamp(),
            format.json({replacer:null, value:3}),
            format.printf(info => {
                return `${info.label} ${info.level}: ${info.message}`;
              }),
            // format.prettyPrint(),
              ),
        level,
        levels: winston.config.syslog.levels,
        transports: [new winston.transports.Console()]
    });
  }

// Similar abstracted methods

public debug = (message:any) =>{
        return this.logger.log('debug','%o', message, {});
}

И в моем файле App.tsx я пытался назвать его так (средаэто объект из другого класса):

import MyLogger from './MyLogger';

private logger:MyLogger;
this.logger = new MyLogger('App.tsx');

this.logger.debug(`Envirnoment: ${environment}`);
// Output: [MyReactApp: App.tsx] debug: Environment: [object Object], %o {}

this.logger.debug(environment);
// Output: [MyReactApp: App.tsx] debug: %o { obj1: {key1: val1}, obj2:{key2: val2}, key3: val3,... }

Я не могу понять, как распечатать консоль так же, как это сделал бы Console.log в браузере, где вы можете напечатать строку и объектвместе, обычно используя синтаксис '[string]${[object]}', и вы сможете увидеть строку и развернуть объект.Кроме того, почему, когда я использую токен %o, я пытаюсь напечатать объект, который печатается вместе с моим сообщением, а другие токены нет?Я подозреваю, что неправильно использую пользовательское форматирование.

...