Как получить весь консольный журнал, ошибку, предупреждение в текстовом файле, если я нажму кнопку - PullRequest
0 голосов
/ 29 марта 2019

У меня есть проект, который выдает некоторые предупреждения, журналы, ошибки, если что-то пойдет не так, поэтому я хочу дать пользователю кнопку, где он может нажать и скачать console.log и сохранить в текстовом файле. Я могу использовать расширение, которое я хочу сделать в JavaScript и jQuery любым из этих способов.

Я хочу получить все это в текстовом файле

enter image description here

Ответы [ 3 ]

1 голос
/ 29 марта 2019

для ответа на ваш вопрос требуется два шага:

  1. читать вывод console.log в переменную
  2. сохранение переменной в текстовый файл

шаг 1 - прослушивание событий регистрации консоли

это можно сделать, заменив объект консоли на самодельный интерфейс:

var consoleText = ""
// define a new console
window.console = (function(console){
    return {
        log: function(text){
            console.log(text);
            consoleText += text;
        },
        info: function (text) {
            console.info(text);
            consoleText += text;
        },
        warn: function (text) {
            console.warn(text);
            consoleText += text;
        },
        error: function (text) {
            console.error(text);
            consoleText += text;
        }
    };
}(window.console));

и для необработанных исключений:

window.addEventListener('error', function(event) {
    consoleText += event.message;
})

шаг 2 - сохранить файл журнала

на основе ответа DevonTaig в Запись данных html-формы в текстовый файл без использования веб-сервера :

function download(filename, text) {
  var pom = document.createElement('a');
  pom.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text));
  pom.setAttribute('download', filename);
  document.body.appendChild(pom);
  pom.click();
  document.body.removeChild(pom);
}

download("log.txt", consoleText)
1 голос
/ 29 марта 2019

Вы можете создать замены для console.log, console.error и т. Д. И добавить сообщения в переменную:

var log = "";
var myConsole = {};
myConsole.log = function(txt) {
  log += txt + "\n";
  console.log(txt);
}

Затем вы можете создать загружаемый файл, содержимое которого является переменной журнала.Установите флажок Создать файл в памяти для загрузки пользователем, а не через сервер , чтобы узнать, как это сделать.

0 голосов
/ 29 марта 2019

Обнаружено, что есть библиотека, написанная кем-то здесь .

Добавлен код в демо:

<html>
    <script type="text/javascript" src="./FileSaver.js"></script>
<body>
<h1>Log download</h1>
<script>
    // Store logs in memory for writing to file ater.
    let logList = [];

    function downloadLogs() {
    var blob = new Blob([logList.toString()], {type: "text/plain;charset=utf-8"});
    saveAs(blob, "logFile.log");
    }

    function createLogMessage(){
        logList.push('log message....');
    }
</script>
    <button type="button" onclick="downloadLogs()">Create Log!</button>
    <button type="button" onclick="createLogMessage()">Write Log!</button>
</body>
</html>
...