From 4c625b172ccd3d763b46b7796ac07eaca7ed18c9 Mon Sep 17 00:00:00 2001 From: qier222 Date: Sat, 16 Apr 2022 13:30:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BF=9D=E5=AD=98=20renderer=20?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E5=88=B0=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/cache.ts | 12 ++++++------ src/main/db.ts | 6 +++--- src/main/index.ts | 10 +++++----- src/main/ipcMain.ts | 2 +- src/main/{logger.ts => log.ts} | 17 ++++++++++------- src/main/preload.ts | 4 ++-- src/main/rendererPreload.ts | 11 +++++++++++ src/main/sentry.ts | 6 +++--- src/main/server.ts | 8 ++++---- src/renderer/global.d.ts | 2 ++ src/renderer/main.tsx | 1 + src/renderer/utils/initLog.ts | 13 +++++++++++++ 12 files changed, 61 insertions(+), 31 deletions(-) rename src/main/{logger.ts => log.ts} (85%) create mode 100644 src/renderer/utils/initLog.ts diff --git a/src/main/cache.ts b/src/main/cache.ts index 5108365..d787d58 100644 --- a/src/main/cache.ts +++ b/src/main/cache.ts @@ -2,7 +2,7 @@ import { db, Tables } from './db' import type { FetchTracksResponse } from '../renderer/api/track' import { app } from 'electron' import { Request, Response } from 'express' -import logger from './logger' +import log from './log' import fs from 'fs' import * as musicMetadata from 'music-metadata' import { APIs } from './CacheAPIsName' @@ -203,7 +203,7 @@ class Cache { if (api === APIs.SongDetail) { const cache = this.get(api, req.query) if (cache) { - logger.debug(`[cache] Cache hit for ${req.path}`) + log.debug(`[cache] Cache hit for ${req.path}`) return cache } } @@ -220,7 +220,7 @@ class Cache { ) if (!isAudioFileExists) return - logger.debug(`[cache] Audio cache hit for ${req.path}`) + log.debug(`[cache] Audio cache hit for ${req.path}`) return { data: [ @@ -306,9 +306,9 @@ class Cache { await fs.writeFile(`${path}/${id}-${br}.${type}`, buffer, error => { if (error) { - return logger.error(`[cache] cacheAudio failed: ${error}`) + return log.error(`[cache] cacheAudio failed: ${error}`) } - logger.info(`Audio file ${id}-${br}.${type} cached!`) + log.info(`Audio file ${id}-${br}.${type} cached!`) db.upsert(Tables.Audio, { id, @@ -318,7 +318,7 @@ class Cache { updateAt: Date.now(), }) - logger.info(`[cache] cacheAudio ${id}-${br}.${type}`) + log.info(`[cache] cacheAudio ${id}-${br}.${type}`) }) } } diff --git a/src/main/db.ts b/src/main/db.ts index 864d2a1..30ebf0d 100644 --- a/src/main/db.ts +++ b/src/main/db.ts @@ -2,7 +2,7 @@ import path from 'path' import { app } from 'electron' import fs from 'fs' import SQLite3 from 'better-sqlite3' -import logger from './logger' +import log from './log' import { createFileIfNotExist } from './utils' const isDev = process.env.NODE_ENV === 'development' @@ -29,7 +29,7 @@ class DB { ) constructor() { - logger.info('[db] Initializing database...') + log.info('[db] Initializing database...') createFileIfNotExist(this.dbFilePath) @@ -42,7 +42,7 @@ class DB { this.sqlite.pragma('auto_vacuum = FULL') this.initTables() - logger.info('[db] Database initialized') + log.info('[db] Database initialized') } initTables() { diff --git a/src/main/index.ts b/src/main/index.ts index a932f7f..4f1633f 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -10,7 +10,7 @@ import { import Store from 'electron-store' import { release } from 'os' import path, { join } from 'path' -import logger from './logger' +import log from './log' import { initIpcMain } from './ipcMain' const isWindows = process.platform === 'win32' @@ -18,7 +18,7 @@ const isMac = process.platform === 'darwin' const isLinux = process.platform === 'linux' const isDev = process.env.NODE_ENV === 'development' -logger.info('[index] Main process start') +log.info('[index] Main process start') // Disable GPU Acceleration for Windows 7 if (release().startsWith('6.1')) app.disableHardwareAcceleration() @@ -99,7 +99,7 @@ async function createWindow() { } app.whenReady().then(async () => { - logger.info('[index] App ready') + log.info('[index] App ready') createWindow() handleWindowEvents() initIpcMain(win) @@ -113,10 +113,10 @@ app.whenReady().then(async () => { // eslint-disable-next-line @typescript-eslint/no-var-requires } = require('electron-devtools-installer') installExtension(REACT_DEVELOPER_TOOLS.id).catch(err => - logger.info('An error occurred: ', err) + log.info('An error occurred: ', err) ) installExtension(REDUX_DEVTOOLS.id).catch(err => - logger.info('An error occurred: ', err) + log.info('An error occurred: ', err) ) } }) diff --git a/src/main/ipcMain.ts b/src/main/ipcMain.ts index 8265c89..0c9f37e 100644 --- a/src/main/ipcMain.ts +++ b/src/main/ipcMain.ts @@ -2,7 +2,7 @@ import { BrowserWindow, ipcMain, app } from 'electron' import { db, Tables } from './db' import { IpcChannels } from './IpcChannelsName' import cache from './cache' -import logger from './logger' +import log from './log' import fs from 'fs' import { APIs } from './CacheAPIsName' diff --git a/src/main/logger.ts b/src/main/log.ts similarity index 85% rename from src/main/logger.ts rename to src/main/log.ts index 0da81ca..47c263f 100644 --- a/src/main/logger.ts +++ b/src/main/log.ts @@ -5,14 +5,17 @@ * @see https://www.npmjs.com/package/electron-log */ -import logger from 'electron-log' +import log from 'electron-log' import pc from 'picocolors' -Object.assign(console, logger.functions) -logger.transports.console.format = `${pc.dim('{h}:{i}:{s}{scope}')} › {text}` -logger.transports.file.level = 'info' +Object.assign(console, log.functions) +log.variables.process = 'main' +log.transports.console.format = `[{process}] ${pc.dim( + '{h}:{i}:{s}{scope}' +)} {level} › {text}` +log.transports.file.level = 'info' -logger.info( +log.info( `\n\n██╗ ██╗███████╗███████╗██████╗ ██╗ █████╗ ██╗ ██╗███╗ ███╗██╗ ██╗███████╗██╗ ██████╗ ╚██╗ ██╔╝██╔════╝██╔════╝██╔══██╗██║ ██╔══██╗╚██╗ ██╔╝████╗ ████║██║ ██║██╔════╝██║██╔════╝ ╚████╔╝ █████╗ ███████╗██████╔╝██║ ███████║ ╚████╔╝ ██╔████╔██║██║ ██║███████╗██║██║ @@ -21,6 +24,6 @@ logger.info( ╚═╝ ╚══════╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝\n` ) -export default logger +export default log -logger.info(`[logger] logger initialized`) +log.info(`[logger] logger initialized`) diff --git a/src/main/preload.ts b/src/main/preload.ts index 22bc2fe..20a628d 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts @@ -1,4 +1,4 @@ -import logger from './logger' +import log from './log' import path from 'path' import { app } from 'electron' import { createDirIfNotExist } from './utils' @@ -10,4 +10,4 @@ if (isDev) { createDirIfNotExist(devUserDataPath) app.setPath('appData', devUserDataPath) } -logger.info(`[index] userData path: ${app.getPath('userData')}`) +log.info(`[index] userData path: ${app.getPath('userData')}`) diff --git a/src/main/rendererPreload.ts b/src/main/rendererPreload.ts index 10e590a..b47ec30 100644 --- a/src/main/rendererPreload.ts +++ b/src/main/rendererPreload.ts @@ -1,5 +1,15 @@ import { IpcChannels } from '@/main/IpcChannelsName' const { contextBridge, ipcRenderer } = require('electron') +const log = require('electron-log') + +const isDev = process.env.NODE_ENV === 'development' + +log.transports.file.level = 'info' +log.variables.process = 'renderer' +log.transports.console.format = isDev + ? `[{process}] {text}` + : `[{process}] {h}:{i}:{s}{scope} {level} › {text}` +contextBridge.exposeInMainWorld('log', log) contextBridge.exposeInMainWorld('ipcRenderer', { sendSync: ipcRenderer.sendSync, @@ -14,6 +24,7 @@ contextBridge.exposeInMainWorld('ipcRenderer', { } }, }) + contextBridge.exposeInMainWorld('env', { isElectron: true, isEnableTitlebar: diff --git a/src/main/sentry.ts b/src/main/sentry.ts index 2ef7c70..5009efe 100644 --- a/src/main/sentry.ts +++ b/src/main/sentry.ts @@ -1,9 +1,9 @@ import * as Sentry from '@sentry/node' import * as Tracing from '@sentry/tracing' import pkg from '../../package.json' -import logger from './logger' +import log from './log' -logger.info(`[sentry] sentry initializing`) +log.info(`[sentry] sentry initializing`) Sentry.init({ dsn: 'https://2aaaa67f1c3d4d6baefafa5d58fcf340@o436528.ingest.sentry.io/6274637', @@ -16,4 +16,4 @@ Sentry.init({ tracesSampleRate: 1.0, }) -logger.info(`[sentry] sentry initialized`) +log.info(`[sentry] sentry initialized`) diff --git a/src/main/server.ts b/src/main/server.ts index 111fb69..ce888d8 100644 --- a/src/main/server.ts +++ b/src/main/server.ts @@ -1,12 +1,12 @@ import { pathCase } from 'change-case' import cookieParser from 'cookie-parser' import express, { Request, Response } from 'express' -import logger from './logger' +import log from './log' import cache from './cache' import fileUpload from 'express-fileupload' import path from 'path' -logger.info('[server] starting http server') +log.info('[server] starting http server') const isDev = process.env.NODE_ENV === 'development' const isProd = process.env.NODE_ENV === 'production' @@ -24,7 +24,7 @@ Object.entries(neteaseApi).forEach(([name, handler]) => { name = pathCase(name) const wrappedHandler = async (req: Request, res: Response) => { - logger.debug(`[server] Handling request: ${req.path}`) + log.debug(`[server] Handling request: ${req.path}`) // Get from cache const cacheData = await cache.getForExpress(name, req) @@ -93,5 +93,5 @@ const port = Number( : process.env.ELECTRON_DEV_NETEASE_API_PORT ?? 3000 ) app.listen(port, () => { - logger.info(`[server] API server listening on port ${port}`) + log.info(`[server] API server listening on port ${port}`) }) diff --git a/src/renderer/global.d.ts b/src/renderer/global.d.ts index db8c96e..b26b642 100644 --- a/src/renderer/global.d.ts +++ b/src/renderer/global.d.ts @@ -1,4 +1,5 @@ import { IpcChannels } from '@/main/IpcChannelsName' +import { ElectronLog } from 'electron-log' export {} @@ -20,6 +21,7 @@ declare global { isMac: boolean isWin: boolean } + log?: ElectronLog } } diff --git a/src/renderer/main.tsx b/src/renderer/main.tsx index 9744e8d..b2043a6 100644 --- a/src/renderer/main.tsx +++ b/src/renderer/main.tsx @@ -1,3 +1,4 @@ +import './utils/initLog' import { StrictMode } from 'react' import * as ReactDOMClient from 'react-dom/client' import { BrowserRouter } from 'react-router-dom' diff --git a/src/renderer/utils/initLog.ts b/src/renderer/utils/initLog.ts new file mode 100644 index 0000000..8f27164 --- /dev/null +++ b/src/renderer/utils/initLog.ts @@ -0,0 +1,13 @@ +export {} + +if (window.log) { + Object.assign(console, window.log.functions) + window.log.info( + `\n\n██╗ ██╗███████╗███████╗██████╗ ██╗ █████╗ ██╗ ██╗███╗ ███╗██╗ ██╗███████╗██╗ ██████╗ +╚██╗ ██╔╝██╔════╝██╔════╝██╔══██╗██║ ██╔══██╗╚██╗ ██╔╝████╗ ████║██║ ██║██╔════╝██║██╔════╝ + ╚████╔╝ █████╗ ███████╗██████╔╝██║ ███████║ ╚████╔╝ ██╔████╔██║██║ ██║███████╗██║██║ + ╚██╔╝ ██╔══╝ ╚════██║██╔═══╝ ██║ ██╔══██║ ╚██╔╝ ██║╚██╔╝██║██║ ██║╚════██║██║██║ + ██║ ███████╗███████║██║ ███████╗██║ ██║ ██║ ██║ ╚═╝ ██║╚██████╔╝███████║██║╚██████╗ + ╚═╝ ╚══════╝╚══════╝╚═╝ ╚══════╝╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚══════╝╚═╝ ╚═════╝\n` + ) +}