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:...