feat: add daily logging and improve workspace UI and ROS status
This commit is contained in:
@@ -0,0 +1,29 @@
|
||||
import { app } from 'electron'
|
||||
import { dirname, join } from 'path'
|
||||
import { inspect } from 'util'
|
||||
import { createDailyLog } from './dailyLog'
|
||||
|
||||
const fallback = app.getPath('logs')
|
||||
export const appLog = createDailyLog([
|
||||
process.env.APPIMAGE
|
||||
? join(dirname(process.env.APPIMAGE), 'logs')
|
||||
: app.isPackaged ? join(dirname(process.execPath), 'logs') : fallback,
|
||||
fallback
|
||||
])
|
||||
|
||||
for (const level of ['warn', 'error'] as const) {
|
||||
const original = console[level].bind(console)
|
||||
console[level] = (...args: unknown[]) => {
|
||||
appLog.write(level, args.map((value) => typeof value === 'string' ? value : inspect(value, { depth: 4 })).join(' '))
|
||||
original(...args)
|
||||
}
|
||||
}
|
||||
|
||||
// Monitor fatal exceptions without changing Node's normal termination behavior.
|
||||
process.on('uncaughtExceptionMonitor', (error, origin) => {
|
||||
appLog.write(origin, error.stack ?? String(error))
|
||||
})
|
||||
process.on('warning', (warning) => appLog.write('warning', warning.stack ?? warning.message))
|
||||
process.on('exit', (code) => appLog.write('exit', `code=${code}`))
|
||||
app.on('child-process-gone', (_event, details) => appLog.write('child-process-gone', JSON.stringify(details)))
|
||||
appLog.write('startup', `version=${app.getVersion()} platform=${process.platform} arch=${process.arch} electron=${process.versions.electron} executable=${process.env.APPIMAGE || process.execPath}`)
|
||||
Reference in New Issue
Block a user