-
Notifications
You must be signed in to change notification settings - Fork 0
/
logger.js
48 lines (42 loc) · 1.27 KB
/
logger.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
const fs = require('fs')
const path = require('path')
const zlib = require('zlib')
const {app, Notification, shell} = require('electron')
const logPath = path.join(app.getPath('userData'), 'log.txt');
module.exports = class Logger {
static error(msg) {
const message = `[${new Date().toLocaleString()}] Error: ${msg}`;
console.error(message);
this.writeLine(message)
}
static log(msg) {
const message = `[${new Date().toLocaleString()}] Info: ${msg}`;
console.log(message);
this.writeLine(message)
}
static writeLine(msg) {
fs.writeFile(logPath, msg + '\n', {flag: 'a'}, (err) => {
if (err) {
console.error('write file error');
}
})
}
static packLogs() {
const gzip = zlib.createGzip();
const is = fs.createReadStream(logPath);
const desktop = app.getPath('desktop');
const gzipLogPath = path.join(desktop, 'log.txt.gz');
const os = fs.createWriteStream(gzipLogPath);
const gzipStream = is.pipe(gzip);
gzipStream.pipe(os);
gzipStream.on('end', () => {
const notification = new Notification({
title: '日志已打包',
body: '日志文件 log.txt.gz'
});
notification.show();
// 打开桌面文件夹
shell.showItemInFolder(gzipLogPath);
})
}
}