89 lines
1.8 KiB
JavaScript
89 lines
1.8 KiB
JavaScript
/**
|
|
* Client-side logger that sends logs to server for debugging.
|
|
* Falls back to console if server logging fails.
|
|
*/
|
|
|
|
let sessionId = null
|
|
let userId = null
|
|
|
|
/**
|
|
* Initialize logger with session/user context.
|
|
* @param {string} sessId
|
|
* @param {string} uid
|
|
*/
|
|
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
|
|
}
|
|
}, 0)
|
|
}
|
|
|
|
/**
|
|
* Log at error level.
|
|
* @param {string} message
|
|
* @param {object} data
|
|
*/
|
|
export function logError(message, data) {
|
|
console.error(`[${message}]`, data)
|
|
sendToServer('error', 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)
|
|
}
|