JSFiddle - React, Tailwind, and code Playground
HTML
<script src="https://raw.github.com/marcuswestin/store.js/master/store.js"></script>
JavaScript
$.getScript("http://log4javascript.org/js/log4javascript.js", function() {
// LocalStorageAppender (leverages store.js to store messages in local storage)
function LocalStorageAppender() { }
LocalStorageAppender.prototype = new log4javascript.Appender();
LocalStorageAppender.prototype.layout = new log4javascript.NullLayout();
LocalStorageAppender.prototype.threshold = log4javascript.Level.DEBUG;
LocalStorageAppender.prototype.append = function(loggingEvent) {
var appender = this;
var getFormattedMessage = function() {
var layout = appender.getLayout();
var formattedMessage = layout.format(loggingEvent);
if (layout.ignoresThrowable() && loggingEvent.exception) {
formattedMessage += loggingEvent.getThrowableStrRep();
}
return formattedMessage;
};
if (store.enabled) {
var formattedMessage = getFormattedMessage();
store.set(JSON.stringify(new Date().getTime()), formattedMessage);
if (loggingEvent.level == Level.FATAL) {
var allStoreMessages = store.getAll();
var logMessageStr = loggingEvent.messages[0] + " - previous javascript log messages:";
for(var prop in allStoreMessages) {
if(allStoreMessages.hasOwnProperty(prop)) {
var storeMessage = allStoreMessages[prop];
if (storeMessage instanceof Array) {
logMessageStr += storeMessage[0] + "\n";
} else {
logMessageStr += storeMessage + "\n";
}
}
}
$.ajax({
type: 'POST',
url: '/logging',
data: 'level=' + loggingEvent.level + '&message=' + logMessageStr,
async: true,
success:...