v1.18.x
Julian Lam 10 years ago
parent f5fce863f9
commit fa39b5e46b

@ -0,0 +1,41 @@
"use strict";
/* global define, socket */
define('admin/advanced/logs', function() {
var Logs = {};
Logs.init = function() {
var logsEl = $('.logs pre');
// Affix menu
$('.affix').affix();
$('.logs').find('button[data-action]').on('click', function(e) {
var btnEl = $(this),
action = btnEl.attr('data-action');
switch(action) {
case 'reload':
socket.emit('admin.logs.get', function(err, logs) {
if (!err) {
logsEl.text(logs);
} else {
app.alertError(err.message);
}
});
break;
case 'clear':
socket.emit('admin.logs.clear', function(err) {
if (!err) {
app.alertSuccess('Logs Cleared!')
btnEl.prev().click();
}
});
break;
}
});
};
return Logs;
});

@ -187,14 +187,9 @@ adminController.events.get = function(req, res, next) {
};
adminController.logs.get = function(req, res, next) {
var logPath = path.join('logs', path.sep, 'output.log');
fs.readFile(logPath, function(err, data) {
if (err || !data) {
data = '';
}
meta.logs.get(function(err, logs) {
res.render('admin/advanced/logs', {
data: validator.escape(data.toString())
data: validator.escape(logs)
});
});
};

@ -20,6 +20,7 @@ var async = require('async'),
require('./meta/css')(Meta);
require('./meta/sounds')(Meta);
require('./meta/settings')(Meta);
require('./meta/logs')(Meta);
Meta.templates = require('./meta/templates');
/* Assorted */

@ -0,0 +1,28 @@
'use strict';
var path = require('path'),
fs = require('fs'),
winston = require('winston');
module.exports = function(Meta) {
Meta.logs = {
path: path.join('logs', path.sep, 'output.log')
};
Meta.logs.get = function(callback) {
fs.readFile(this.path, {
encoding: 'utf-8'
}, function(err, logs) {
if (err) {
winston.error('[meta/logs] Could not retrieve logs: ' + err.message);
}
callback(undefined, logs || '');
});
}
Meta.logs.clear = function(callback) {
fs.truncate(this.path, 0, callback);
}
};

@ -32,7 +32,8 @@ var async = require('async'),
config: {},
settings: {},
email: {},
analytics: {}
analytics: {},
logs: {}
};
SocketAdmin.before = function(socket, method, next) {
@ -207,6 +208,14 @@ SocketAdmin.analytics.get = function(socket, data, callback) {
}
};
SocketAdmin.logs.get = function(socket, data, callback) {
meta.logs.get(callback);
};
SocketAdmin.logs.clear = function(socket, data, callback) {
meta.logs.clear(callback);
};
function getHourlyStatsForSet(set, hours, callback) {
var hour = new Date(),
terms = {},

@ -7,4 +7,13 @@
</div>
</div>
</div>
<div class="col-lg-3">
<div class="panel panel-default affix">
<div class="panel-heading">Logs Control Panel</div>
<div class="panel-body">
<button class="btn btn-primary" data-action="reload"><i class="fa fa-refresh"></i> Reload Logs</button>
<button class="btn btn-warning" data-action="clear"><i class="fa fa-eraser"></i> Clear Logs</button>
</div>
</div>
</div>
</div>

Loading…
Cancel
Save