sysLog.html 4.8 KB
Newer Older
zlt2000's avatar
zlt2000 已提交
1 2 3 4 5 6 7 8 9 10 11
<div class="layui-card">
    <div class="layui-card-header">
        <h2 class="header-title">系统日志</h2>
        <span class="layui-breadcrumb pull-right">
          <a href="#!console">首页</a>
          <a><cite>系统日志</cite></a>
        </span>
    </div>
    <div class="layui-card-body">
        <div class="layui-form toolbar">
            搜索:
12 13
            <select id="sysLog-search-key">
                <option value="_all">全文搜索</option>
zlt2000's avatar
zlt2000 已提交
14 15 16 17
                <option value="message">日志信息</option>
                <option value="logLevel">日志级别</option>
                <option value="appName">应用名</option>
                <option value="classname">类名</option>
zlt2000's avatar
zlt2000 已提交
18
                <option value="traceId">链路追踪id</option>
zlt2000's avatar
zlt2000 已提交
19
            </select>&emsp;
20 21
            <input id="sysLog-search-value" class="layui-input search-input" style="width: 300px" type="text" placeholder="输入关键字"/>&emsp;
            <button id="sysLog-btn-search" class="layui-btn icon-btn"><i class="layui-icon">&#xe615;</i>搜索</button>
zlt2000's avatar
zlt2000 已提交
22 23 24 25 26 27 28 29
        </div>

        <table class="layui-table" id="sysLog-table" lay-filter="sysLog-table"></table>
    </div>
</div>

<script>
    layui.use(['form', 'table', 'util', 'config', 'admin', 'upload'], function () {
30 31
        let table = layui.table;
        let config = layui.config;
zlt2000's avatar
zlt2000 已提交
32
        let admin = layui.admin;
zlt2000's avatar
zlt2000 已提交
33 34 35 36

        // 渲染表格
        table.render({
            elem: '#sysLog-table',
zlt2000's avatar
zlt2000 已提交
37
            url: config.base_server + 'api-log/sysLog?sortCol=timestamp&isHighlighter=true',
zlt2000's avatar
zlt2000 已提交
38
            method: 'GET',
39
            headers:{'Authorization': 'Bearer ' + config.getToken().access_token},
zlt2000's avatar
zlt2000 已提交
40 41 42 43
            page: true,
            cols: [[
                {type: 'numbers'},
                {
zlt2000's avatar
zlt2000 已提交
44 45 46 47 48 49 50 51 52 53 54 55
                    field: 'timestamp', width: 180, sort: true, templet: function (d) {
                        let newDate = Date.parse(d.timestamp);
                        newDate = new Date(newDate);
                        let yyyy = newDate.getFullYear();
                        let MM = (newDate.getMonth()+1);
                        let dd = newDate.getDate();
                        let hh = newDate.getHours()<10 ? "0"+newDate.getHours() : newDate.getHours();
                        let mm = newDate.getMinutes()<10 ? "0"+newDate.getMinutes() : newDate.getMinutes();
                        let ss = newDate.getSeconds()<10 ? "0"+newDate.getSeconds() : newDate.getSeconds();
                        let SSS = newDate.getMilliseconds();
                        return yyyy+"-"+MM+"-"+dd+" "+hh+":"+mm+":"+ss+"."+SSS;
                    }, title: '时间'
zlt2000's avatar
zlt2000 已提交
56 57
                },
                {field: 'message', sort: true, title: '日志信息', width: 350},
zlt2000's avatar
zlt2000 已提交
58
                {field: 'logLevel', sort: true, title: '日志级别', width: 110},
zlt2000's avatar
zlt2000 已提交
59
                {field: 'appName', sort: true, title: '应用名', width: 120},
zlt2000's avatar
zlt2000 已提交
60 61 62 63 64 65 66 67
                {field: 'traceId', sort: false, title: '追踪id', width: 180, templet: function (d) {
                    if (d.traceId){
                        return '<a class="layui-table-link" href="javascript:void(0);" lay-event="traceLog">'+d.traceId+'</a>';
                    } else {
                        return '';
                    }
                }},
                {field: 'spanId', sort: false, title: 'spanId', width: 80},
zlt2000's avatar
zlt2000 已提交
68
                {field: 'classname', sort: true, title: '类名', width: 250},
zlt2000's avatar
zlt2000 已提交
69 70 71
                {field: 'threadName', sort: true, title: '线程名', width: 150},
                {field: 'serverIp', sort: true, title: '服务ip', width: 130},
                {field: 'serverPort', sort: true, title: '服务端口', width: 110}
zlt2000's avatar
zlt2000 已提交
72 73 74
            ]]
        });

zlt2000's avatar
zlt2000 已提交
75 76 77 78 79 80 81 82 83
        // 工具条点击事件
        table.on('tool(sysLog-table)', function (obj) {
            if (obj.event === 'traceLog') {
                showTraceLog(obj.data.traceId);
            }
        });

        //显示表单弹窗
        let showTraceLog = function (traceId) {
zlt2000's avatar
zlt2000 已提交
84 85
            traceId = traceId.replace('<mark>', '');
            traceId = traceId.replace('</mark>', '');
zlt2000's avatar
zlt2000 已提交
86 87 88 89 90 91 92 93
            admin.putTempData('traceId', traceId);
            admin.popupCenter({
                title: '日志链路',
                area: '670px',
                path: 'pages/log/traceLog.html'
            });
        };

zlt2000's avatar
zlt2000 已提交
94
        // 搜索按钮点击事件
95 96 97 98 99 100
        $('#sysLog-btn-search').click(function () {
            let key = $('#sysLog-search-key').val();
            let value = $('#sysLog-search-value').val();
            if (key != '_all' && value) {
                value = key + ':' + value;
            }
zlt2000's avatar
zlt2000 已提交
101 102 103
            table.reload('sysLog-table', {
                where: {queryStr: value}
            });
zlt2000's avatar
zlt2000 已提交
104 105 106
        });
    });
</script>