Где я могу найти журналы для моего приложения Electron в производстве?
Я создал приложение с помощью Electron и использовал Electron-Builder для создания установщика и средства обновления окон Squirrel. Все это прекрасно работает, но у меня возникают проблемы с отладкой рабочей версии моего приложения.
Являются ли журналы, созданные console.log
записано где-то на диске при использовании рабочей версии? Если так, где я могу их найти? Или все они удаляются при компиляции исполняемого файла? Должен быть какой-то лог-файл для моего приложения, верно?
Я нашел SquirrelSetupLog в C:\Users\Tieme\AppData\Local\MyApp\SquirrelSetupLog
но этого недостаточно для отладки моей производственной проблемы.
Просто наткнулся на электронный журнал. Это может сработать, если обычные консольные журналы действительно не записаны где-то на диск..
4 ответа
Если вы имеете в виду консоль из веб-приложения, то это относится:)
Вы должны сделать обратный вызов, чтобы это работало. Узнайте больше о них здесь: 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 для "лучшей" регистрации и записи на диск. Но вы всегда должны использовать обратные вызовы.
Как сказано в электронном журнале, местоположение по умолчанию для файла журнала:
- в Linux: ~/.config/{имя приложения}/logs/main.log
- в macOS: ~/Library/Logs/{имя приложения}/main.log
- в Windows: %USERPROFILE%\AppData\Roaming{имя приложения}\logs\main.log
Вы можете указать узлу записать стандартный вывод в файл следующим образом: /questions/45916353/uzel-vojti-v-fajl-vmesto-konsoli/45916420#45916420
Вывод exe от Squirrel - это установщик , а не приложение. Как вы упомянули, это поместит ваше фактическое приложение (после установки) вC:\Users\YOUR_NAME\AppData\Local\YOUR_APP
.
Поэтому, когда вы запускаете свой exe, текущим рабочим каталогом будет каталог AppData\Local (а не каталог, из которого вы запустили установщик).
Поэтому после того, как узел выведет ваш стандартный вывод в файл, найдите в этом каталоге журналы.
Старый вопрос, но я нашел удобным настроить это в 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, которые должны быть преобразованы в строку и проанализированы обратно в Поездка. Ваш рендерер будет работать с ручным тормозом!