日志
普通日志
记录用户操作日志或者系统日志,可以使用 electron-log 来记录日志,可同时主进程和 Render 进程日志。也可以使用其他日志库,例如 log4js-node,Render 进程通过 IPC 调用主进程的日志方法
以 electron-log 为例
// 主进程const logger = require("electron-log");
logger.initialize();
// 自定义文件展示规则logger.transports.file.archiveLogFn = (file) => {};
// 自定义名称,默认为 main.jslogger.transports.file.fileName = $filename;
// 自定义写入文件的 level 等级,默认为 sillylogger.transport.file.level = $level;
// 自定义文件滚转大小,默认为 1024 ** 2logger.transports.file.maxSize = 50 * 1024 * 1024; // 单位:字节
// 自定义日志文件路径,各个系统下,路径不同log.transports.file.resolvePath = (vars) => { return path.join(vars.libraryDefaultDir, "custom-logs", vars.fileName);};
// 使用命名空间区分不同的日志export const mainLogger = logger.scope("main");// Render 进程import logger from 'electron-log/renderer';
const rendererLogger = isWeb() ? console ? logger.scope('renderer');Crash 日志
记录程序崩溃日志,使用 electron 自带的 crashReporter
const { crashReporter } = require("electron");
crashReporter.start({ submitURL: "", // 可以配置将Crash日志上传至服务器 uploadToServer: true, // 也可以配置是否上传至服务器});当 uploadToServer 为 false 时,crash reporter 会自动记录崩溃日志到本地文件,文件目录可以通过 app.getPath('crashDumps') 获取,也可以自行设置 app.setPath('crashDumps', path)。当使用代码 process.crash(); 来模拟 crash 时,在刚才指定的文件目录就会生成一份 crash 文件
使用 node-minidump 来解析该文件(依赖 breakpad,windows 安装较为困难,可以使用 WSL 或者 Linux 来安装和解析)。electron symbol 文件可以去 electron releases 寻找到自己使用的版本,下载对应的 symbol 文件即可
const minidump = require("minidump");
// minidumpFilePath 为 dmp 文件路径// symbolPaths 为 electron symbol 文件路径minidump.walkStack(minidumpFilePath, symbolPaths, callback);文件解析后如下所示
