Где я могу найти журналы рабочего приложения Electron?

Я создал приложение с помощью Electron и использовал Electron-Builder, чтобы создать белку программа установки и обновления Windows. Все работает отлично, но у меня проблемы с отладкой производственной версии моего приложения.

Журналы, созданные console.log, записываются где-нибудь на диске при использовании производственной версии? Если да, то где их найти? Или все они удаляются при компиляции исполняемого файла? Для моего приложения должен быть какой-то файл журнала, верно?

Я нашел SquirrelSetupLog в C:\Users\Tieme\AppData\Local\MyApp\SquirrelSetupLog, но этого недостаточно для отладки моей производственной проблемы.


Только что наткнулся на электронный журнал. Это могло бы сработать, если бы обычные журналы консоли действительно не записывались куда-нибудь на диск ..


person Tieme    schedule 14.12.2016    source источник


Ответы (2)


Если вы имеете в виду консоль из веб-приложения, то это применимо :)

Вам нужно сделать обратный вызов, чтобы это сработало. Подробнее о них читайте здесь: http://electron.atom.io/docs/api/remote/

Вот небольшой пример:

В файле рядом с вашим электроном main.js с именем logger.js добавьте этот код:

exports.log = (entry) => {
    console.log(entry);
}

А затем в своем веб-приложении используйте это, чтобы вызвать обратный вызов этого метода журнала:

// This line gets the code from the newly created file logger.js
const logger = require('electron').remote.require('./logger');

// This line calls the function exports.log from the logger.js file, but
// this happens in the context of the electron app, so from here you can 
// see it in the console when running the electron app or write to disk.
logger.log('Woohoo!');

Вы также можете взглянуть на https://www.npmjs.com/package/electron-log для «лучшего» ведения журнала и записи на диск. Но вам всегда нужно использовать обратные вызовы.

person Martin Ingvar Kofoed Jensen    schedule 27.01.2017
comment
Ага, это означает, что вам нужно будет предоставить свой собственный способ записи этих журналов на диск, верно? Я понял. Просто надеялся, что вывод console.log будет где-то автоматически записан на диск. электронный журнал выглядит неплохо. Спасибо. - person Tieme; 27.01.2017
comment
Ага. Вы можете использовать пакет регистрации в электронном виде, чтобы сделать фактическую запись файлов журнала, чтобы упростить работу :) - person Martin Ingvar Kofoed Jensen; 30.01.2017
comment
Я не могу найти файл журнала / журналы. может кто-нибудь помочь? - person chetan; 03.10.2018
comment
Это появилось в Electron 6. Может быть актуально для людей, работающих над новыми проектами. electronicjs.org/docs/api/app#appsetapplogspathpath - person mmartinson; 06.09.2019

Старый вопрос, но мне было удобно настроить его в package.json (это относится к консоли из основного процесса)

 "main": "app/src/main.js",
  "scripts": {
    "postinstall": "install-app-deps",
    "start": "npm install && electron . > /tmp/electron-app.log",
    "pack": "build --dir",
    "dist": "build",
    "dist:win": "build --platform win32",
    "dist:linux": "build --platform linux"
  }

Вы можете немного уточнить это, например, получить откуда-то путь / tmp /, но вы поняли идею :)

Я бы посоветовал по поводу принятого ответа и в целом о постоянном вызове "main" из рендерера: накладные расходы на это изменение контекста довольно велики и даже могут быть огромными, если вы регистрируете объекты JSON, которые должны быть преобразованы в строку и проанализированы обратно в Поездка. Ваш рендерер будет работать с ручным тормозом!

person rupps    schedule 15.06.2019
comment
Хотя это на самом деле не помогает с вопросом. Ваше решение не запускает упакованное приложение. Вопрос был в том, как получить логи из запущенного упакованного приложения. - person ChrisG; 18.09.2019
comment
о, это верно, к сожалению, ни один из принятых ответов. Мой совет состоял в том, чтобы просто избегать постоянных изменений контекста и сериализации объектов от рендерера к основному процессу. Что касается уже упакованного приложения, я не думаю, что вы можете получить доступ к консольному выводу основного процесса без его ручного запуска из консоли с помощью npm или изменения сценария запуска в package.json. - person rupps; 19.09.2019