diff --git a/admin/dashboard/templates/wx_logs.html b/admin/dashboard/templates/wx_logs.html index d2d87e5..56db50e 100644 --- a/admin/dashboard/templates/wx_logs.html +++ b/admin/dashboard/templates/wx_logs.html @@ -43,6 +43,7 @@ logType: 'info', logLines: 100, logContent: [], + logContentHtml: '', // 新增 currentView: '9' // 设置当前菜单项 } }, @@ -56,17 +57,39 @@ .then(response => { if (response.data.success) { this.logContent = response.data.data.content || []; + // 处理为带颜色的HTML + this.logContentHtml = this.logContent.map(line => { + if (line.includes('ERROR')) { + return `${this.escapeHtml(line)}`; + } else if (line.includes('WARNING') || line.includes('WARN')) { + return `${this.escapeHtml(line)}`; + } else if (line.includes('DEBUG')) { + return `${this.escapeHtml(line)}`; + } else if (line.includes('INFO')) { + return `${this.escapeHtml(line)}`; + } else { + return `${this.escapeHtml(line)}`; + } + }).join(''); } else { this.$message.error('加载日志失败'); + this.logContentHtml = ''; } }) .catch(error => { console.error('加载日志出错:', error); this.$message.error('加载日志出错'); + this.logContentHtml = ''; }) .finally(() => { this.loading = false; }); + }, + escapeHtml(text) { + // 防止XSS + return text.replace(/[<>&"]/g, function(c) { + return {'<':'<','>':'>','&':'&','"':'"'}[c]; + }); } } });