我们使用一个开源软件,一般都是通过搜索示例或教程来学习如何使用。可是如果一个软件发生过不兼容的变更,而网络上一般都是些旧的做法,这样就会给我们带来非常大的心智负担。
因此我建议有志之士尽量去看官方文档,即使它可能是英语,或者没有太好的示例,仍然要去看,而不是被一些没头没尾或者抄来抄去的博客耽误你的时间。
Electron 的官方文档就非常得不详细,它也在 main,preload,renderer 这一块变过很多次,详情可以看看博客中的上一篇文章《在 webapck+electron+typescript中使用go开发的node插件》。
本文说说一个常用的日志小工具 electron-log 的使用(基于 5.1.4)。
- 引入
1npm i electron-log
- 自己定义一个 logger.ts(也可以在 main.ts 中直接定义)
1import log from 'electron-log/main'; 2log.transports.console.level = false; // 控制台关闭输出(只输出到文件) 3log.transports.file.level = 'silly'; 4log.transports.file.maxSize = 1002430; // 文件最大不超过 1M 5log.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}]{scope} {text}'; 6const date = new Date(); 7const dateStr = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate(); 8log.transports.file.resolvePathFn = () => 'log\\' + dateStr + '.log'; // 在程序的安装目录(生产),或代码根目录(开发)的 log 文件夹下打印日志。忘掉 %USERPROFILE%\AppData\... 吧 9export default log;
- 在 main.ts 中引入 logger
1import logger from '_main/logger'; // 路径自己修改一下到你的 logger.ts,本文已做简化 2logger.initialize(); // 在任何 logger 使用之前执行
- 在 preload 或者 renderer 进程中使用
1import logger from "_main/logger"; // 路径自己修改一下到你的 logger.ts,本文已做简化 2logger.log("一行日志")
旧的方法比如使用 ipc 等,在老版本是可以用的。但是在 5.1.4 版本,打包后的程序会无法打印日志。
https://github.com/megahertz/electron-log/blob/master/docs/migration.md