From 6a0c83f13571c72b2ed2332b03d346512d2616ba Mon Sep 17 00:00:00 2001 From: roman533 Date: Wed, 7 Jun 2023 08:10:30 +0200 Subject: [PATCH 1/7] initial logger, still getting path error --- package-lock.json | 28 ++++++++++++++++ package.json | 2 ++ .../Navigation/BottomNavigation.vue | 4 +++ src/composables/useLogger/useLogger.ts | 33 +++++++++++++++++++ 4 files changed, 67 insertions(+) create mode 100644 src/composables/useLogger/useLogger.ts diff --git a/package-lock.json b/package-lock.json index ba89816..33e602d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,10 +15,12 @@ "@vueuse/components": "^10.1.2", "@vueuse/core": "^10.1.2", "clipboardy": "^3.0.0", + "electron-log": "^4.4.8", "randexp": "^0.5.3", "roboto-fontface": "^0.10.0", "tesseract.js": "^3.0.3", "tplant": "^3.1.0", + "tslog": "^4.8.2", "vue-router": "^4.2.2", "vue3-drag-resize": "^2.0.5", "vuetify": "^3.3.2" @@ -4135,6 +4137,11 @@ "node": ">= 10.0.0" } }, + "node_modules/electron-log": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", + "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" + }, "node_modules/electron-publish": { "version": "24.4.0", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.4.0.tgz", @@ -8088,6 +8095,17 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "node_modules/tslog": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/tslog/-/tslog-4.8.2.tgz", + "integrity": "sha512-eAKIRjxfSKYLs06r1wT7oou6Uv9VN6NW9g0JPidBlqQwPBBl5+84dm7r8zSOPVq1kyfEw1P6B3/FLSpZCorAgA==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/fullstack-build/tslog?sponsor=1" + } + }, "node_modules/tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", @@ -11961,6 +11979,11 @@ } } }, + "electron-log": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/electron-log/-/electron-log-4.4.8.tgz", + "integrity": "sha512-QQ4GvrXO+HkgqqEOYbi+DHL7hj5JM+nHi/j+qrN9zeeXVKy8ZABgbu4CnG+BBqDZ2+tbeq9tUC4DZfIWFU5AZA==" + }, "electron-publish": { "version": "24.4.0", "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-24.4.0.tgz", @@ -14848,6 +14871,11 @@ "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", "dev": true }, + "tslog": { + "version": "4.8.2", + "resolved": "https://registry.npmjs.org/tslog/-/tslog-4.8.2.tgz", + "integrity": "sha512-eAKIRjxfSKYLs06r1wT7oou6Uv9VN6NW9g0JPidBlqQwPBBl5+84dm7r8zSOPVq1kyfEw1P6B3/FLSpZCorAgA==" + }, "tsutils": { "version": "3.21.0", "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", diff --git a/package.json b/package.json index b173ec7..2f0d9c2 100644 --- a/package.json +++ b/package.json @@ -72,10 +72,12 @@ "@vueuse/components": "^10.1.2", "@vueuse/core": "^10.1.2", "clipboardy": "^3.0.0", + "electron-log": "^4.4.8", "randexp": "^0.5.3", "roboto-fontface": "^0.10.0", "tesseract.js": "^3.0.3", "tplant": "^3.1.0", + "tslog": "^4.8.2", "vue-router": "^4.2.2", "vue3-drag-resize": "^2.0.5", "vuetify": "^3.3.2" diff --git a/src/components/Navigation/BottomNavigation.vue b/src/components/Navigation/BottomNavigation.vue index 48ba472..997d6c1 100644 --- a/src/components/Navigation/BottomNavigation.vue +++ b/src/components/Navigation/BottomNavigation.vue @@ -23,6 +23,7 @@ to="/regex" prepend-icon="mdi-regex" value="regex" + @click="addLog('New log message')" > Regex @@ -34,6 +35,9 @@ diff --git a/src/composables/useLogger/useLogger.ts b/src/composables/useLogger/useLogger.ts index be54e59..8a9f208 100644 --- a/src/composables/useLogger/useLogger.ts +++ b/src/composables/useLogger/useLogger.ts @@ -1,4 +1,4 @@ -import { onMounted, onUnmounted, ref } from 'vue'; +import { ref } from 'vue'; import { Logger } from 'tslog'; import { ElectronLogLevel } from './electron-log-level'; @@ -25,10 +25,14 @@ export default function useLogger() { * @param {string} message - The log message * @param {ElectronLogLevel} [logLevel=ElectronLogLevel.INFO] - The log level */ - const addLog = (message: string, logLevel = ElectronLogLevel.INFO) => { + const addLog = ( + message: string, + logLevel = ElectronLogLevel.INFO, + fileName = import.meta.env.VITE_LOG_FILE_NAME + ) => { logger.debug(message); logMessages.value.push(message); - electronLogger.saveLog(message, logLevel); + electronLogger.saveLog(message, logLevel, fileName); }; /** @@ -71,15 +75,6 @@ export default function useLogger() { addLog(message, ElectronLogLevel.SILLY); }; - // Lifecycle hooks - onMounted(() => { - logger.info('Logger initialized'); - }); - - onUnmounted(() => { - logger.info('Logger terminated'); - }); - return { log: logMessages, addLog, diff --git a/src/composables/useNotificationSystem/useNotificationSystem.ts b/src/composables/useNotificationSystem/useNotificationSystem.ts index d0ad7d4..cc5ff02 100644 --- a/src/composables/useNotificationSystem/useNotificationSystem.ts +++ b/src/composables/useNotificationSystem/useNotificationSystem.ts @@ -1,5 +1,6 @@ import { ref } from 'vue'; import useTokenGenerator from '@/composables/useTokenGenerator/useTokenGenerator'; +import useLogger from '@/composables/useLogger/useLogger'; /** * notifications list @@ -11,6 +12,7 @@ const notifications = ref([]); */ export default function useNotificationSystem() { const { generateValidToken } = useTokenGenerator(); + const { addLog, addWarnLog, addErrorLog } = useLogger(); /** * Create a notification @@ -22,6 +24,17 @@ export default function useNotificationSystem() { options ); + const type = _options.type; + + // Add log message to the log file + if (type === 'error') { + addErrorLog(_options.title); + } else if (type === 'warning') { + addWarnLog(_options.title); + } else { + addLog(_options.title); + } + notifications.value.push( ...[ { From 9f8d9f409210e30593c20f23fb9b30ba709cfd3b Mon Sep 17 00:00:00 2001 From: Kevin Beier Date: Mon, 12 Jun 2023 12:13:02 +0200 Subject: [PATCH 7/7] test --- electron/main/index.ts | 4 +++ electron/preload/index.ts | 54 +++++++++++++++++++++++++++------------ 2 files changed, 42 insertions(+), 16 deletions(-) diff --git a/electron/main/index.ts b/electron/main/index.ts index 748708e..ea8cb4d 100644 --- a/electron/main/index.ts +++ b/electron/main/index.ts @@ -97,6 +97,10 @@ async function createWindow() { // Get all screens/windows from the main process to the renderer process ipcMain.handle('get-screens', getScreen); + + // Electron wants this to be called initially before calling + // app.getPath('logs') + app.setAppLogsPath(); } // This method will be called when Electron has finished diff --git a/electron/preload/index.ts b/electron/preload/index.ts index cc64520..54aa702 100644 --- a/electron/preload/index.ts +++ b/electron/preload/index.ts @@ -1,6 +1,7 @@ import { app } from 'electron'; import log from 'electron-log'; import path from 'node:path'; +import fs from 'fs'; function domReady( condition: DocumentReadyState[] = ['complete', 'interactive'] @@ -119,29 +120,50 @@ contextBridge.exposeInMainWorld('electronAPI', { level: ElectronLogLevel = ElectronLogLevel.INFO, logFileName: string ) => { - const logDirecotryName = 'logs'; + //github.com/finos/SymphonyElectron/blob/0431a9f5add13cd16c19006775f1e907f3c3b2ce/src/common/logger.ts#L66 + const logDirectoryPath = path.join(app.getPath('exe'), 'logs'); - console.log(process.env.NODE_ENV); - - log.transports.file.format = '[{h}:{i}:{s}:{ms}] [{level}] {text}'; - log.transports.file.maxSize = 5 * 1024 * 1024; // 5 MB + // Create the log directory if it doesn't exist + if (!fs.existsSync(logDirectoryPath)) { + fs.mkdirSync(logDirectoryPath); + } - if (process.env.NODE_ENV === 'development') { - // Set the desired log file name - log.transports.file.resolvePath = () => - path.join(logDirecotryName, logFileName); + const logFilePath = path.join(logDirectoryPath, logFileName); + try { // Save log message using electron-log - log[level](message); - } else { - // TODO: cant save log file in the root directory of the installed application yet - // Set the desired log file name in the root directory of the installed application - const logFilePath = path.join(app.getPath('exe'), logFileName); log.transports.file.resolvePath = () => logFilePath; - - // Save log message using electron-log log[level](message); + + return { success: true, message: message }; + } catch (error) { + console.error(error); + return { success: false, message: 'Error saving log file.' }; } + + // const logDirecotryName = 'logs'; + + // console.log(process.env.NODE_ENV); + + // log.transports.file.format = '[{h}:{i}:{s}:{ms}] [{level}] {text}'; + // log.transports.file.maxSize = 5 * 1024 * 1024; // 5 MB + + // if (process.env.NODE_ENV === 'development') { + // // Set the desired log file name + // log.transports.file.resolvePath = () => + // path.join(logDirecotryName, logFileName); + + // // Save log message using electron-log + // log[level](message); + // } else { + // // TODO: cant save log file in the root directory of the installed application yet + // // Set the desired log file name in the root directory of the installed application + // const logFilePath = path.join(app.getPath('exe'), logFileName); + // log.transports.file.resolvePath = () => logFilePath; + + // // Save log message using electron-log + // log[level](message); + // } }, });