Сохранить javascript вывод номера строки консоли в консоли браузера dev tools после переопределения объекта console - PullRequest
1 голос
/ 21 февраля 2020

У меня есть функция javascript, которая переопределяет функцию console.log, которая направляет аргументы в другое место назначения. Я все еще хочу, чтобы журнал выводился в консоли браузера без изменений. Однако исходный номер строки, где первоначально вызывался console.log, не отображается, и вместо этого номер строки всегда является точкой, где вызывается apply.

Можно ли сохранить исходный номер строки, где Консоль вызывается, и какой будет лучший подход для этого?

Приложение, которое я создаю, VueJS, поэтому я собрал пример в качестве VueJS компонента ниже. Этот пример может быть сохранен как App.vue и протестирован с использованием vue serve. При нажатии кнопки «Test Log» вы увидите журнал в представлении, а также в инструментах разработки вы увидите вывод журнала в консоли. Проблема заключается в том, что номер строки всегда является этой строкой o_log.apply(console, arguments), и мне действительно нужно, чтобы она была этой строкой console.log('in testLog()') (т. Е. Номер строки, в которой изначально вызывался журнал консоли).

<template>
  <div>
    <h1>{{name}}</h1>
    <button @click="testLog">Test Log</button>
    <hr/>
    <p v-for="(log, i) in logs" :key="i" :style="{background: log.color}" >{{log.message}}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      name: 'Console Log Prototype',
      logs: [],
    }
  },
  methods: {
    testLog() {
      console.log('in testLog()')
    }
  },
  created() {
    let self = this;
    var o_log = console.log
    function customLog(msg) {
      var entry = {color: 'pink', message: msg}
      self.logs.push(entry)
      o_log.apply(console, arguments)
    }
    console.log = customLog;
  }
}
</script>
...