Skip to content

Commit

Permalink
feat: 增加日志
Browse files Browse the repository at this point in the history
  • Loading branch information
027xiguapi committed Dec 22, 2023
1 parent 324354a commit 82e53b4
Show file tree
Hide file tree
Showing 10 changed files with 108 additions and 10 deletions.
4 changes: 4 additions & 0 deletions packages/desktop/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
# @pear-rec/desktop

## 1.3.7

feat: 增加日志

## 1.3.6

feat: 修改GIF
Expand Down
6 changes: 4 additions & 2 deletions packages/desktop/electron/main/contract.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { app } from 'electron';
import { homedir } from 'node:os';
import path from 'node:path';

process.env.DIST_ELECTRON = path.join(__dirname, '../');
Expand All @@ -21,7 +21,7 @@ export const ICON = url
: path.join(DIST, './imgs/logo/favicon.ico');
export const PEAR_FILES = path.join(DIST_ELECTRON, `../Pear Files`);

const DOCS_PATH = app.getPath('documents');
export const DOCS_PATH = path.join(homedir(), 'Documents');

export const filePath = path.join(DOCS_PATH, `Pear Files`);

Expand All @@ -32,3 +32,5 @@ export const CONFIG_FILE_PATH = path.join(PEAR_FILES_PATH, `config.json`);
export const DEFAULT_CONFIG_FILE_PATH = path.join(PEAR_FILES_PATH, `default-config.json`);

export const DB_PATH = path.join(PEAR_FILES_PATH, 'db/pear-rec.db');

export const LOG_PATH = path.join(PEAR_FILES_PATH, 'log');
3 changes: 3 additions & 0 deletions packages/desktop/electron/main/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import { registerGlobalShortcut, unregisterAllGlobalShortcut } from './globalSho
import { initConfig, getConfig } from '@pear-rec/server/src/config';
import { initServerProcess, quitServerProcess } from './serverProcess';
import './ipcMain';
import './logger';

initServerProcess();
initConfig();
Expand All @@ -31,6 +32,8 @@ if (release().startsWith('6.1')) app.disableHardwareAcceleration();
// Set application name for Windows 10+ notifications
if (process.platform === 'win32') app.setAppUserModelId(app.getName());

app.commandLine.appendSwitch('in-process-gpu');

if (!app.requestSingleInstanceLock()) {
app.quit();
process.exit(0);
Expand Down
8 changes: 8 additions & 0 deletions packages/desktop/electron/main/ipcMain.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import * as recorderFullScreenWin from '../win/recorderFullScreenWin';
import * as editGifWin from '../win/editGifWin';
import * as utils from './utils';
import { editConfig } from '@pear-rec/server/src/config';
import logger from './logger';

const selfWindws = async () =>
await Promise.all(
Expand All @@ -39,6 +40,12 @@ const selfWindws = async () =>
);

function initIpcMain() {
// 日志
ipcMain.on('lg:send-msg', (e, msg) => {
logger.info(msg);
});

// 主页
ipcMain.on('ma:open-win', () => {
mainWin.openMainWin();
});
Expand Down Expand Up @@ -165,6 +172,7 @@ function initIpcMain() {
});
// 图片展示
ipcMain.on('vi:open-win', (e, search) => {
viewImageWin.closeViewImageWin();
viewImageWin.openViewImageWin(search);
});
ipcMain.on('vi:close-win', () => {
Expand Down
79 changes: 79 additions & 0 deletions packages/desktop/electron/main/logger.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// logger.ts
import { app } from 'electron';
import log from 'electron-log';
import path from 'node:path';
import { LOG_PATH } from './contract';

// 关闭控制台打印
log.transports.console.level = false;
log.transports.file.level = 'debug';
log.transports.file.maxSize = 10024300; // 文件最大不超过 10M
// 输出格式
log.transports.file.format = '[{y}-{m}-{d} {h}:{i}:{s}.{ms}] [{level}]{scope} {text}';
let date = new Date();
let dateStr = date.getFullYear() + '-' + (date.getMonth() + 1) + '-' + date.getDate();
// 文件位置及命名方式
// 默认位置为:C:\Users\[user]\AppData\Roaming\[appname]\electron_log\
// 文件名为:年-月-日.log
// 自定义文件保存位置为安装目录下 \log\年-月-日.log
log.transports.file.resolvePathFn = () => path.join(LOG_PATH, dateStr + '.log');

// 有六个日志级别error, warn, info, verbose, debug, silly。默认是silly
export default {
info(param: any) {
log.info(param);
},
warn(param: any) {
log.warn(param);
},
error(param: any) {
log.error(param);
},
debug(param: any) {
log.debug(param);
},
verbose(param: any) {
log.verbose(param);
},
silly(param: any) {
log.silly(param);
},
};

app.on('ready', async () => {
// 渲染进程崩溃
app.on('renderer-process-crashed', (event, webContents, killed) => {
log.error(
`APP-ERROR:renderer-process-crashed; event: ${JSON.stringify(
event,
)}; webContents:${JSON.stringify(webContents)}; killed:${JSON.stringify(killed)}`,
);
});

// GPU进程崩溃
app.on('gpu-process-crashed', (event, killed) => {
log.error(
`APP-ERROR:gpu-process-crashed; event: ${JSON.stringify(event)}; killed: ${JSON.stringify(
killed,
)}`,
);
});

// 渲染进程结束
app.on('render-process-gone', async (event, webContents, details) => {
log.error(
`APP-ERROR:render-process-gone; event: ${JSON.stringify(event)}; webContents:${JSON.stringify(
webContents,
)}; details:${JSON.stringify(details)}`,
);
});

// 子进程结束
app.on('child-process-gone', async (event, details) => {
log.error(
`APP-ERROR:child-process-gone; event: ${JSON.stringify(event)}; details:${JSON.stringify(
details,
)}`,
);
});
});
3 changes: 3 additions & 0 deletions packages/desktop/electron/main/serverProcess.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { type UtilityProcess, utilityProcess } from 'electron';
import { url, serverPath } from './contract';
import logger from './logger';

let serverProcess: null | UtilityProcess = null;

Expand All @@ -13,9 +14,11 @@ export function initServerProcess() {
serverProcess.on?.('spawn', () => {
serverProcess.stdout?.on('data', (data) => {
console.log(`serverProcess output: ${data}`);
logger.info(`serverProcess output: ${data}`);
});
serverProcess.stderr?.on('data', (data) => {
console.error(`serverProcess err: ${data}`);
logger.error(`serverProcess output: ${data}`);
});
});
}
Expand Down
3 changes: 2 additions & 1 deletion packages/desktop/electron/preload/electronAPI.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import { contextBridge, ipcRenderer } from 'electron';

contextBridge.exposeInMainWorld('electronAPI', {
setTitle: (title: any) => ipcRenderer.send('set-title', title),
// logger
sendLogger: (msg: any) => ipcRenderer.send('lg:send-msg', msg),

// mainWin
sendMaOpenWin: () => ipcRenderer.send('ma:open-win'),
Expand Down
8 changes: 3 additions & 5 deletions packages/desktop/electron/win/viewImageWin.ts
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,6 @@ function createViewImageWin(search?: any): BrowserWindow {
});
}

viewImageWin.once('ready-to-show', async () => {
viewImageWin?.show();
});

return viewImageWin;
}

Expand All @@ -43,7 +39,9 @@ function openViewImageWin(search?: any) {
}

function closeViewImageWin() {
viewImageWin?.close();
if (!(viewImageWin && viewImageWin.isDestroyed())) {
viewImageWin?.close();
}
viewImageWin = null;
}

Expand Down
3 changes: 2 additions & 1 deletion packages/desktop/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"autoprefixer": "^10.4.16",
"electron": "^26.0.0",
"electron-builder": "^24.9.1",
"electron-log": "^5.0.1",
"jsonfile": "^6.1.0",
"typescript": "^5.2.2",
"uuid": "^9.0.1",
Expand All @@ -42,4 +43,4 @@
"engines": {
"node": "^14.18.0 || >=16.0.0"
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -130,7 +130,6 @@ export default function VideoToGifConverter({ videoSrc, user }) {
<Progress percent={percent} />
</div>
<video className="videoRef" ref={videoRef} src={videoSrc}></video>

<img ref={gifRef} className="hide" alt="GIF" />
</div>
);
Expand Down

0 comments on commit 82e53b4

Please sign in to comment.