
The index.html file that makes use of the
Logger API functionality is listed below.
<!DOCTYPE html>
<html manifest="manifest.appcache">
<head>
<title>Logger API sample</title>
<link rel="stylesheet" href="../assets/style.css" type="text/css" media="all"/>
<script type="text/javascript">
window.onLaunchboxLoaded = function() {
console.log('API Loaded');
console.log('Build: ' + window.launchbox.Container.version);
console.log('OS: ' + window.launchbox.Container.osName + ' ' + window.launchbox.Container.osVersion);
console.log('Network: ' + window.launchbox.Container.networkStatus.type);
restoreLogLevel();
window.launchbox.SplashScreen.hide();
};
function printText(str) {
var d = document.getElementById('results');
d.innerHTML += "<br/>" + str;
d.scrollTop = d.scrollHeight;
console.log(str);
}
function clearText() {
var d = document.getElementById('results');
d.innerHTML = "";
}
</script>
<script src="main.js"></script>
</head>
<body>
<header>
<h3>Logging api example
</h3>
</header>
<div class="title">This Application demonstrates usage of Logger JavaScript API provided by Pega.</div>
<table width="100%">
<tr>
<td width="50%" style="border-right: 1px solid;" align="center">
<div id="silent" onclick="setLogLevel('silent');">SILENT</div>
</td>
<td width="50%" align="center">
<div id="error" onclick="setLogLevel('error');">ERROR</div>
</td>
</tr>
<tr>
<td width="50%" style="border-right: 1px solid;" align="center">
<div id="warning" onclick="setLogLevel('warning');">WARNING</div>
</td>
<td width="50%" align="center">
<div id="info" onclick="setLogLevel('info');">INFO</div>
</td>
</tr>
<tr>
<td width="50%" style="border-right: 1px solid;" align="center">
<div id="debug" onclick="setLogLevel('debug');">DEBUG</div>
</td>
<td width="50%" align="center">
<div id="verbose" onclick="setLogLevel('verbose');">VERBOSE</div>
</td>
</tr>
</table>
<div style="display: block; padding: 10px;">
<input type="button" onclick="setLogToConsole(true);" value="Turn on logging to console" />
<input type="button" onclick="setLogToConsole(false);" value="Turn off logging to console" />
<input type="button" onclick="setLogToFile(true);" value="Turn on logging to file" />
<input type="button" onclick="setLogToFile(false);" value="Turn off logging to file" />
<input type="text" id="txtMaxFileSize" />
<input type="button" onClick="setTotalDiskQuota();" value="Set disk quota (in bytes)" />
<input type="button" onclick="readLogTail(10);" value="Read last 10 log records" />
<input type="button" onClick="clearLogs();" value="Clear log file" />
<input type="button" onclick="archiveLogs(new Date(new Date()-24*3600*1000), new Date());" value="Archive the last day of logs" />
</div>
<div style="padding: 10px;margin-top:-20px;">
<input type="button" onclick="clearText();" value="Clear all text"/>
</div>
<div id="results"></div>
</body>
</html>
The contents of the main.js file containing JavaScript used by the above application are listed below:
function setLogLevel(levelString) {
document.getElementById("silent").className = "";
document.getElementById("error").className = "";
document.getElementById("warning").className = "";
document.getElementById("info").className = "";
document.getElementById("debug").className = "";
document.getElementById("verbose").className = "";
document.getElementById(levelString).className = "text-bold";
var logLevel;
if (levelString == "silent") {
logLevel = window.launchbox.Logger.LogLevel.SILENT;
} else if (levelString == "error") {
logLevel = window.launchbox.Logger.LogLevel.ERROR;
} else if (levelString == "warning") {
logLevel = window.launchbox.Logger.LogLevel.WARNING;
} else if (levelString == "info") {
logLevel = window.launchbox.Logger.LogLevel.INFO;
} else if (levelString == "debug") {
logLevel = window.launchbox.Logger.LogLevel.DEBUG;
} else if (levelString == "verbose") {
logLevel = window.launchbox.Logger.LogLevel.VERBOSE;
}
window.launchbox.Logger.logLevel = logLevel;
printText("Log level is set to " + levelString);
}
function restoreLogLevel() {
var logLevel = window.launchbox.Logger.logLevel;
if (logLevel == window.launchbox.Logger.LogLevel.SILENT) {
document.getElementById("silent").className = "text-bold";
} else if (logLevel == window.launchbox.Logger.LogLevel.ERROR) {
document.getElementById("error").className = "text-bold";
} else if (logLevel == window.launchbox.Logger.LogLevel.WARNING) {
document.getElementById("warning").className = "text-bold";
} else if (logLevel == window.launchbox.Logger.LogLevel.INFO) {
document.getElementById("info").className = "text-bold";
} else if (logLevel == window.launchbox.Logger.LogLevel.VERBOSE) {
document.getElementById("verbose").className = "text-bold";
}
}
function setLogToConsole(shouldLogToConsole) {
window.launchbox.Logger.logToConsole = shouldLogToConsole;
printText("Log to console is set to " + shouldLogToConsole);
}
function setLogToFile(shouldLogToFile) {
window.launchbox.Logger.logToFile = shouldLogToFile;
printText("Log to file is set to " + shouldLogToFile);
}
function setTotalDiskQuota() {
var txtMaxSize = document.getElementById("txtMaxFileSize");
var maxSize;
if (isNaN(txtMaxSize.value)) {
maxSize = 20 * 1024 * 1024; // 20MB
} else {
maxSize = parseInt(txtMaxSize.value);
}
window.launchbox.Logger.totalDiskQuota = maxSize;
printText("Disk quota for storing logs is set to " + maxSize + " B");
}
function readLogTail(recordCount) {
window.launchbox.Logger.readLogTail(recordCount, function(logs) {
printText("Requested " + recordCount + " last log records, received: " + logs.length);
for (var i = 0; i < logs.length; i++) {
printText(logs[i]);
}
});
}
function clearLogs() {
printText("Clearing log file");
window.launchbox.Logger.clearLogFile();
}
function archiveLogs(fromDate, toDate) {
window.launchbox.Logger.archiveLogs(fromDate, toDate, function(logsURL, error) {
printText("== Archived logs at " + logsURL);
window.resolveLocalFileSystemURL(logsURL, function(entry) {
entry.file(function(file) {
var reader = new FileReader();
reader.onload = function(event) {
printText("== Archive file contents ==\n" + reader.result + "\n==\n");
};
reader.readAsText(file);
});
});
});
}
The contents of the cache manifest file called manifest.appcache for
this application are listed below:
CACHE MANIFEST CACHE: index.html NETWORK: *