我們使用一個開源軟件,一般都是通過搜索示例或教程來學習如何使用。可是如果一個軟件發生過不兼容的變更,而網絡上一般都是些舊的做法,這樣就會給我們帶來非常大的心智負擔。
因此我建議有志之士儘量去看官方文檔,即使它可能是英語,或者沒有太好的示例,仍然要去看,而不是被一些沒頭沒尾或者抄來抄去的博客耽誤你的時間。
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