| // goal is for end user js to look like...
'use strict';
'require fs';
'require blah.logger'
return blah.logger.MagicLOgger("servicename-in-syslog", "Friendly name");
/// what I've got in luci-static/resources/blah/logger.js
var MagicLogger = function(logtag, name) {
/// boilerplate below from common app implementations
return L.view.extend({
load: function() {
return Promise.all([
L.resolveDefault(fs.stat('/sbin/logread'), null),
L.resolveDefault(fs.stat('/usr/sbin/logread'), null)
]);
},
render: function(stat) {
var logger = stat[0] ? stat[0].path : stat[1] ? stat[1].path : null;
L.Poll.add(function() {
return L.resolveDefault(fs.exec_direct(logger, ['-e', logtag])).then(function(res) {
var log = document.getElementById("logfile");
if (res) {
log.value = res.trim();
} else {
log.value = _('No related logs yet!');
}
log.scrollTop = log.scrollHeight;
});
});
return E('div', { class: 'cbi-map' },
E('div', { class: 'cbi-section' }, [
E('div', { class: 'cbi-section-descr' }, _('The syslog output, pre-filtered for messages related to: ' + name)),
E('textarea', {
'id': 'logfile',
'style': 'width: 100% !important; padding: 5px; font-family: monospace',
'readonly': 'readonly',
'wrap': 'off',
'rows': 25
})
]));
},
handleSaveApply: null,
handleSave: null,
handleReset: null
});
}
return MagicLogger;
|