class RunLog extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: 'open' });
this.logFiles = [];
this.expandedLogs = new Set();
this.logDir = '/log'; // 直接设置日志目录路径
// 添加分页相关的状态变量
this.currentPage = 1;
this.pageSize = 10; // 每页显示10个日志文件
this.totalPages = 1;
this.currentLogContent = []; // 存储当前日志文件的所有内容
}
connectedCallback() {
this.render();
this.setupEventListeners();
this.loadLogFileList();
}
render() {
this.shadowRoot.innerHTML = `
加载中...
';
this.fetchLogContent(logPath).then(content => {
let html = '';
if (!content || content.length === 0) {
html += '
日志为空
';
} else {
content.forEach(line => {
let className = 'log-message';
if (line.includes('[INFO]')) {
className += ' info';
} else if (line.includes('[WARNING]')) {
className += ' warning';
} else if (line.includes('[ERROR]')) {
className += ' error';
}
html += `
${line}
`;
});
}
html += '
';
contentElement.innerHTML = html;
// 设置过滤器事件
const filterElements = contentElement.querySelectorAll('.log-filter');
filterElements.forEach(filter => {
filter.addEventListener('click', () => {
filterElements.forEach(f => f.classList.remove('active'));
filter.classList.add('active');
const level = filter.getAttribute('data-level');
const messagesContainer = contentElement.querySelector('.log-content-messages');
this.filterLogContent(messagesContainer, level);
});
});
}).catch(error => {
contentElement.innerHTML = `