Объекты журнала консоли при использовании console.info.bind (console) - PullRequest
0 голосов
/ 04 ноября 2018

Я видел, как многие разработчики Angular2 + используют метод console.info.bind(console) для создания службы ведения журнала из консоли ведения журнала javascript. Однако в моей реализации этого все мои объекты javascript вышли из системы как [object object].

Как настроить мой логгер так, чтобы мои объекты отображались в моей консоли?

ConsoleLogger.service.ts

import {Injectable} from '@angular/core';
import {environment} from '../../../environments/environment';

import {Logger} from './logger.service';

export let isDebugMode = environment.isDebugMode;

const noop = (): any => undefined;

@Injectable()
export class ConsoleLoggerService implements Logger {
  get info() {
    if (isDebugMode) {
      return console.info.bind(console);
    } else {
      return noop;
    }
  }

  get warn() {
    if (isDebugMode) {
      return console.warn.bind(console);
    } else {
      return noop;
    }
  }
}

Logger.Service.ts

import {Injectable} from '@angular/core';

export abstract class Logger {
  info: any;
  warn: any;
}

@Injectable()
export class LoggerService implements Logger {
  info: any;
  warn: any;
}

Example.Component.ts

import {Component, OnInit} from '@angular/core';
import {LoggerService} from 'src/app/core';


@Component({
  selector: 'app-example-component',
  templateUrl: 'example.component.html',
  styles: ['example.component.scss']
})
export class ExampleComponent implements OnInit {
  exampleObject: {a: 'apple'; b: 'banana'};
  constructor(
    private _logger: LoggerService,
  ) {
  }

  async ngOnInit() {
   this._logger.info("Example Output: " + this.exampleObject);
   // Example Output: [object object]
   // ?? i want to see the actual object
  }
}

Ответы [ 2 ]

0 голосов
/ 04 ноября 2018

После игры с этим некоторое время. Я узнал, что это дало мне то, что я хочу.

this._logger.info('Example: ', this.exampleObject);
0 голосов
/ 04 ноября 2018

Если вы хотите увидеть объект в консоли, вы должны использовать JSON.stringify ()

 return console.info.bind(JSON.stringify(console));
...