56 lines
2.1 KiB
TypeScript
56 lines
2.1 KiB
TypeScript
import Log from "../Log";
|
|
import Popup from "../utils/Popup";
|
|
import CommonUtils from "../utils/CommonUtils";
|
|
import VIEW_LOGS_HANDLER_HTML from "../../../static/html/view_logs_handler.html";
|
|
import ClassName from "../../container/ClassName";
|
|
import { Injectable } from "../../container/Injectable";
|
|
import Logger from "../Logger";
|
|
|
|
@ClassName('ViewLogsHandler')
|
|
@Injectable()
|
|
export default class ViewLogsHandler {
|
|
|
|
constructor(
|
|
private readonly commonUtils: CommonUtils,
|
|
private readonly logger: Logger,
|
|
) {
|
|
}
|
|
|
|
public handle(): void {
|
|
let logCounter = this.logger.getCounter();
|
|
let pop = new Popup(VIEW_LOGS_HANDLER_HTML
|
|
.replace('{{}}', logCounter.info.toString())
|
|
.replace('{{}}', logCounter.warning.toString())
|
|
.replace('{{}}', logCounter.error.toString()), '查看日志');
|
|
window.setTimeout(() => {
|
|
let container = pop.element.querySelector('div');
|
|
let text = document.createElement('div');
|
|
let logs = Log.getLogs().split('\r\n');
|
|
logs.forEach(log => {
|
|
let p = document.createElement('p');
|
|
p.innerText = log;
|
|
if (log.slice(0, 10).includes('ERR')) {
|
|
p.style.backgroundColor = '#ff000080';
|
|
} else if (log.slice(0, 10).includes('WRN')) {
|
|
p.style.backgroundColor = '#ffff0080';
|
|
}
|
|
text.append(p);
|
|
});
|
|
pop.element.querySelector('button').addEventListener('click', () => window.setTimeout(() => {
|
|
this.commonUtils.exportTextFile(
|
|
'wuhu_log_' + Log.getTime()
|
|
.replace('[', '')
|
|
.replace(']', '')
|
|
.replace(' ', '')
|
|
.replace('.', '')
|
|
.replaceAll('-', '')
|
|
.replaceAll(':', '') + '.log',
|
|
[Log.getLogs()]
|
|
);
|
|
}, 0));
|
|
container.innerHTML = '';
|
|
container.append(text);
|
|
}, 0);
|
|
}
|
|
}
|