minor: heavily simplify server and app content. unify styling (#4)
All checks were successful
ci/woodpecker/push/push Pipeline was successful
All checks were successful
ci/woodpecker/push/push Pipeline was successful
Co-authored-by: Madison Grubb <madison@elastiflow.com> Reviewed-on: #4
This commit was merged in pull request #4.
This commit is contained in:
@@ -1,88 +1,30 @@
|
||||
/**
|
||||
* Client-side logger that sends logs to server for debugging.
|
||||
* Falls back to console if server logging fails.
|
||||
*/
|
||||
|
||||
/** Client-side logger: sends to server, falls back to console. */
|
||||
let sessionId = null
|
||||
let userId = null
|
||||
|
||||
/**
|
||||
* Initialize logger with session/user context.
|
||||
* @param {string} sessId
|
||||
* @param {string} uid
|
||||
*/
|
||||
const CONSOLE_METHOD = Object.freeze({ error: 'error', warn: 'warn', info: 'log', debug: 'log' })
|
||||
|
||||
export function initLogger(sessId, uid) {
|
||||
sessionId = sessId
|
||||
userId = uid
|
||||
}
|
||||
|
||||
/**
|
||||
* Send log to server (non-blocking).
|
||||
* @param {string} level
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
*/
|
||||
async function sendToServer(level, message, data) {
|
||||
// Use setTimeout to avoid blocking - fire and forget
|
||||
setTimeout(async () => {
|
||||
try {
|
||||
await $fetch('/api/log', {
|
||||
method: 'POST',
|
||||
body: {
|
||||
level,
|
||||
message,
|
||||
data,
|
||||
sessionId,
|
||||
userId,
|
||||
timestamp: new Date().toISOString(),
|
||||
},
|
||||
credentials: 'include',
|
||||
}).catch(() => {
|
||||
// Silently fail - don't spam console if server is down
|
||||
})
|
||||
}
|
||||
catch {
|
||||
// Ignore errors - logging shouldn't break the app
|
||||
}
|
||||
function sendToServer(level, message, data) {
|
||||
setTimeout(() => {
|
||||
$fetch('/api/log', {
|
||||
method: 'POST',
|
||||
body: { level, message, data, sessionId, userId, timestamp: new Date().toISOString() },
|
||||
credentials: 'include',
|
||||
}).catch(() => { /* server down - don't spam console */ })
|
||||
}, 0)
|
||||
}
|
||||
|
||||
/**
|
||||
* Log at error level.
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
*/
|
||||
export function logError(message, data) {
|
||||
console.error(`[${message}]`, data)
|
||||
sendToServer('error', message, data)
|
||||
function log(level, message, data) {
|
||||
console[CONSOLE_METHOD[level]](`[${message}]`, data)
|
||||
sendToServer(level, message, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* Log at warn level.
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
*/
|
||||
export function logWarn(message, data) {
|
||||
console.warn(`[${message}]`, data)
|
||||
sendToServer('warn', message, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* Log at info level.
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
*/
|
||||
export function logInfo(message, data) {
|
||||
console.log(`[${message}]`, data)
|
||||
sendToServer('info', message, data)
|
||||
}
|
||||
|
||||
/**
|
||||
* Log at debug level.
|
||||
* @param {string} message
|
||||
* @param {object} data
|
||||
*/
|
||||
export function logDebug(message, data) {
|
||||
console.log(`[${message}]`, data)
|
||||
sendToServer('debug', message, data)
|
||||
}
|
||||
export const logError = (message, data) => log('error', message, data)
|
||||
export const logWarn = (message, data) => log('warn', message, data)
|
||||
export const logInfo = (message, data) => log('info', message, data)
|
||||
export const logDebug = (message, data) => log('debug', message, data)
|
||||
|
||||
Reference in New Issue
Block a user