123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- var stompClient = null;
- function setConnected(connected) {
- var el = document.getElementById('websocketStatus');
- el.style.visibility = connected ? 'visible' : 'hidden';
- el.class = connected ? 'alert alert-info' : 'alert alert-danger';
- if (!connected) {
- el.innerHTML = 'Disconnected!';
- } else {
- el.innerHTML = 'Connected to CAS. Streaming and tailing logs based on <kbd>[' + logConfigFileLocation + ']</kbd>...';
- }
- }
- function connect() {
- $('#logoutputarea').empty();
- var socket = new SockJS(urls.reportsWebsocket);
- stompClient = Stomp.over(socket);
- stompClient.connect({}, function () {
- setConnected(true);
- stompClient.subscribe('/topic/logs', function (msg) {
- if (msg != null && msg.body != '') {
- showLogs(msg.body);
- }
- });
- });
- }
- function disconnect() {
- $('#logoutputarea').empty();
- $('#logoutputarea').attr('readonly', 'readonly');
- if (stompClient != null) {
- stompClient.disconnect();
- }
- setConnected(false);
- }
- function showLogs(message) {
- if (message != '') {
- $('#logoutputarea').val($('#logoutputarea').val() + '\n' + message);
- $('#logoutputarea').scrollTop(document.getElementById('logoutputarea').scrollHeight);
- }
- }
- disconnect();
- connect();
- setInterval(function () {
- }, 100);
- $('#myTabs a').click(function (e) {
- e.preventDefault();
- $(this).tab('show');
- });
- var alertHandler = (function () {
- var alertContainer = $('#alert-container');
- var create = function (message, state) {
-
- alertContainer.html('<div class="alert alert-' + state + ' alert-dismissable"><button type="button" class="close" data-dismiss="alert" aria-hidden="true">×</button><span>' + message + '</span></div>');
- alertContainer.delay(2000).fadeOut('slow');
- };
- var destroy = function () {
- alertContainer.empty();
- };
- return {
- dismiss: function () {
- destroy();
- },
- show: function (msg, state) {
- create(msg, state);
- }
- };
- })();
- var loggingDashboard = (function () {
- var json = null;
- var logLevels = ['trace', 'debug', 'info', 'warn', 'error'];
- var getData = function () {
- $.getJSON(urls.getConfiguration, function (data) {
- json = data;
- loggerTable();
- });
- };
- var getAuditData = function () {
- $.getJSON(urls.getAuditLog, function (data) {
- if ($(data).length > 0) {
- loggerTableAudit(data);
- } else {
- $('#auditLogTable').DataTable();
- }
- });
- };
- var loggerTableAudit = function (jsonData) {
- var t = $('#auditLogTable').DataTable({
- 'autoWidth': false,
- 'order': [[3, 'desc']],
- retrieve: true,
- columnDefs: [
- {'width': '5%', 'targets': 0},
- {'width': '100%', 'targets': 1},
- {
- 'targets': 2,
- render: function (data) {
- var dd = data.toLowerCase();
- if (dd.indexOf('created') != -1) {
- return '<span class="glyphicon glyphicon-plus" aria-hidden="true"> </span>' + data;
- }
- if (dd.indexOf('validated') != -1) {
- return '<span class="glyphicon glyphicon-ok" aria-hidden="true"> </span>' + data;
- }
- if (dd.indexOf('destroyed') != -1 || dd.indexOf('deleted') != -1) {
- return '<span class="glyphicon glyphicon-minus" aria-hidden="true"> </span>' + data;
- }
- if (dd.indexOf('success') != -1) {
- return '<span class="glyphicon glyphicon-thumbs-up" aria-hidden="true"> </span>' + data;
- }
- if (dd.indexOf('failed') != -1) {
- return '<span class="glyphicon glyphicon-thumbs-down" aria-hidden="true"> </span>' + data;
- }
- return data;
- }
- }
- ]
- });
- for (var i = 0; i < jsonData.length; i++) {
- var rec = jsonData[i];
- t.row.add([
- rec.principal,
- rec.resourceOperatedUpon,
- rec.actionPerformed,
- new Date(rec.whenActionWasPerformed),
- rec.clientIpAddress,
- rec.serverIpAddress
- ]).draw(false);
- }
- };
- var loggerTable = function () {
- $('#loggersTable').DataTable({
- 'autoWidth': false,
- 'order': [[1, 'desc']],
- data: json.loggers,
- 'drawCallback': function () {
- var api = this.api();
- if (api.page.info().pages > 1) {
- $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'block';
- } else {
- $('#' + $.fn.dataTable.tables()[0].id + '_paginate')[0].style.display = 'none';
- }
- },
- 'initComplete': function (settings) {
- if (!settings.aoData || settings.aoData.length == 0) {
- $('#loadingMessage').addClass('d-none');
- $('#errorLoadingData').removeClass('d-none');
- } else {
- $('#loadingMessage').addClass('d-none');
- $('#errorLoadingData').addClass('d-none');
- $('#loggingDashboard .tabsContainer').removeClass('d-none');
- }
- },
- 'processing': true,
- columnDefs: [
- {
- 'targets': 0,
- 'className': 'details-control',
- 'orderable': false,
- 'data': 'appenders',
- 'defaultContent': '',
- render: function (data) {
- if (data.length > 0) {
- return '<span></span>';
- } else {
- return '';
- }
- }
- },
- {
- targets: 1,
- data: 'name',
- className: 'col-xs-5'
- },
- {
- targets: 2,
- data: 'additive',
- className: 'additive col-xs-2',
- render: function (data) {
- if (data) {
- return '<span class="glyphicon glyphicon-ok" aria-hidden="true"></span>';
- } else {
- return '<span class="glyphicon glyphicon-remove" aria-hidden="true"></span>';
- }
- }
- },
- {
- targets: 3,
- data: 'state',
- className: 'col-xs-2'
- },
- {
- targets: 4,
- data: 'level',
- className: 'col-xs-3',
- render: function (data, type, full, meta) {
- return toggleSwitch(data, type, full, meta);
- }
- }
- ]
- });
- };
- var toggleSwitch = function (data, type, full) {
-
-
-
-
-
-
- var btnColor;
- switch (data.toLowerCase()) {
- case 'error':
- btnColor = 'danger';
- break;
- case 'info':
- btnColor = 'info';
- break;
- case 'warn':
- btnColor = 'warning';
- break;
- default:
- btnColor = 'default';
- }
- var btnGroup = '<div class="dropdown" data-logger="' + full + '"><button class="btn btn-sm btn-block bg-' + btnColor + ' dropdown-toggle" name="recordinput" data-toggle="dropdown">' + data + ' <span class="caret"></span></button>' +
- '<div class="dropdown-menu">';
- for (var i = 0; i < logLevels.length; i++) {
- btnGroup += '<a class="dropdown-item" href="#">' + logLevels[i].toUpperCase() + '</a>';
- }
- btnGroup += '</div>';
- return btnGroup;
- };
-
- var viewAppenders = function (data) {
- return '<table class="table table-bordered row-detail"><tbody><tr class="">' +
- '<td class="field-label active">Appenders:</td>' +
- '<td><kbd>' + JSON.stringify(data.appenders, null, 2) + '</kbd></td>' +
- '</tr>' +
- '</tbody></table>';
- };
- var addEventHandlers = function () {
-
- $(document).on('click', '#loggersTable .dropdown-menu a', function (e) {
-
- e.preventDefault();
- var selText = $(this).text();
- changeLogLevel(selText, this);
- });
- $(document).on('click', '#loggersTable tbody td.details-control span', function () {
- var table = $('#loggersTable').DataTable();
- var tr = $(this).closest('tr');
- var row = table.row(tr);
- if (row.child.isShown()) {
-
- row.child.hide();
- tr.removeClass('shown');
- } else {
-
- row.child(viewAppenders(row.data()), 'info').show();
- tr.addClass('shown');
- }
- });
- };
- var changeLogLevel = function (newLevel, el) {
-
- var table = $('#loggersTable').DataTable();
- var data = table.row($(el).closest('tr')[0]).data();
- if (newLevel != data.level) {
- var cell = table.cell($(el).closest('td')[0]);
- $.post(urls.updateLevel, {
- loggerName: data.name,
- loggerLevel: newLevel,
- additive: data.additive
- }, function () {
- cell.data(newLevel).draw();
- alertHandler.show('Successfully changed.', 'success');
- }).fail(function () {
- alertHandler.show('Error saving change. Please try again', 'danger');
- });
- }
- };
-
- (function init() {
- })();
- return {
- init: function () {
- getData();
- addEventHandlers();
- getAuditData();
- },
- getJson: function () {
- return json;
- },
- showLoggersTable: function () {
- loggerTable();
- }
- };
- })();
- loggingDashboard.init();
|