需求
将软件各个模块中需要输出日志的位置进行统一的日志输出,提高软件可维护性,且日志文件按照时间进行区分(一天一个日志文件)。
效果:
文件夹:
文件:
实现:
主进程中:
background.ts:
import { ipcMain } from "electron";
app.on("ready", async () => {
// ...
// 日志文件处理
logFile();
});
// 监听渲染进程中发过来的信息,并存入log日志文件中
ipcMain.on('output-log', (event, arg) => { outputLog(arg) })
/**
* 日志文件处理
*/
function logFile(): void {
getConfigJsonData().then(res => {
let logFileUrl = res['logFileUrl'];
let file = logFileUrl + getDate() + '.txt';
LogFileUrl = file;
// 1. 判断日志文件是否存在
judgeFileExist(file).then(res => {
if (!res) { // 文件不存在 20220211.txt
// 创建文件目录(文件目录如果不存在)
fs.mkdir(logFileUrl, { recursive: true }, (err: any) => {
if (err) throw err;
// 创建文件
fs.writeFile(file, "", (err: any) => {
if (err) throw err;
})
})
}
});
})
}
/**
* 将log语句写入到log文件中
* @param log log语句
*/
function outputLog(log: string): void {
const res = `${new Date()} \n ${log} \n \n`;
fs.writeFile(LogFileUrl, res, { flag: 'a+' }, (err: any) => {
if (err) throw err;
})
}
渲染进程中:
Home.vue
const { ipcRenderer } = require('electron');
ipcRenderer.send('output-log', 'ping');