前端日志系统需统一捕获错误并转为结构化数据,通过监听window.onerror、error事件及unhandledrejection捕获全局异常,将错误转化为含type、message、stack、timestamp等字段的标准对象,结合上下文信息使用createErrorLog函数规范化,利用sendBeacon或fetch上报至服务端,兼顾页面性能与数据完整性,实现可检索、可追踪的错误监控体系。

前端日志系统中结构化 JavaScript 错误信息,关键在于统一捕获、标准化格式和附加上下文。直接使用 console.error() 或裸抛异常不利于排查问题,应将错误转化为结构化对象,便于存储、检索和分析。
通过监听全局事件,确保未捕获的错误也能被收集:
window.onerror = function(message, source, lineno, colno, error) {
logError({
type: 'runtime',
message: error?.message || message,
stack: error?.stack,
url: source,
line: lineno,
column: colno,
timestamp: Date.now(),
userAgent: navigator.userAgent
});
return true;
};
window.addEventListener('unhandledrejection', event => {
logError({
type: 'promise',
message: event.reason?.message || 'Unknown promise rejection',
stack: event.reason?.stack,
reason: event.reason,
timestamp: Date.now()
});
});
所有错误应遵循一致的数据结构,方便后端解析和查询。常见字段包括:
function createErrorLog(error, context = {}) {
return {
type: 'js_error',
message: error.message,
stack: error.stack,
timestamp: Date.now(),
page: location.href,
...context
};
}
结构化后需将错误发送到日志服务,但要注意用户体验不受影响:
立即学习“Java免费学习笔记(深入)”;
function logError(data) {
const body = JSON.stringify(data);
if (navigator.sendBeacon) {
navigator.sendBeacon('/log', body);
} else {
fetch('/log', { method: 'POST', body, keepalive: true });
}
}
以上就是前端日志系统中如何结构化JavaScript错误信息?的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号