sheercms
Version:
Sheer Cliff CMS is a simple and powerful content management system (CMS) for Node JS.
120 lines (101 loc) • 3.24 kB
JavaScript
app.controller('LogController', function($scope, LogService) {
$scope.data = {
isAuthorized: false,
title: "Log Viewer",
logs: [], // {name, size, modified}
message: "",
messageType: "",
levels: [
{text: 'all levels', value: 0},
{text: 'trace +', value: 10},
{text: 'debug +', value: 20},
{text: 'info +', value: 30},
{text: 'warn +', value: 40},
{text: 'error +', value: 50},
{text: 'fatal', value: 60}
]
};
$scope.selectedLog = {
log: null,
raw: "",
entries: [],
level: 40
};
$scope.selectLog = function(log) {
loadLogFile(log, 40, true); //start with warn level so we don't download the whole file
};
$scope.back = function() {
$scope.selectedLog.log = null;
$scope.selectedLog.raw = "";
$scope.selectedLog.entries = [];
};
$scope.reload = function() {
if ($scope.selectedLog.log) {
LogService.clearLogCache($scope.selectedLog.log.name);
loadLogFile($scope.selectedLog.log, $scope.selectedLog.level, false);
}
else {
loadLogs(false);
}
};
$scope.toggleSort = function() {
if ($scope.selectedLog.entries) {
$scope.selectedLog.entries.reverse();
}
};
$scope.changeLevel = function() {
loadLogFile($scope.selectedLog.log, $scope.selectedLog.level, true);
};
function init() {
$scope.$parent.resize('.log-view');
if ($scope.global.isAdmin === true) {
$scope.data.isAuthorized = true;
loadLogs(true);
}
else {
$scope.data.isAuthorized = false;
}
}
function loadLogFile(log, level, useCache) {
$scope.selectedLog.level = level;
setMessage("Loading log file...", "alert-info");
LogService.getLog(log.name, level, useCache).then(function(result) {
if (result.success) {
clearMessage();
try {
$scope.selectedLog.log = log;
$scope.selectedLog.raw = JSON.stringify(result.entries);
$scope.selectedLog.entries = result.entries;
}
catch(e) {
console.error(e);
setMessage("Error parsing log file.", "alert-danger");
}
}
else {
setMessage(result.message, "alert-danger");
}
});
}
function loadLogs(useCache) {
setMessage("Loading log files...", "alert-info");
LogService.list(useCache).then(function(data) {
if (data.success) {
$scope.data.logs = data.logs;
clearMessage();
}
else {
setMessage(data.message, "alert-danger");
}
});
}
function clearMessage() {
$scope.data.message = "";
$scope.data.messageType = "";
}
function setMessage(msg, type) {
$scope.data.message = msg;
$scope.data.messageType = type;
}
init();
});