From 77a5496d1f6b010fa899670423537f15971d50f4 Mon Sep 17 00:00:00 2001 From: ebolam Date: Wed, 21 Sep 2022 11:40:10 -0400 Subject: [PATCH] Adding better error logging in UI --- aiserver.py | 14 ++++++++++---- static/koboldai.css | 2 -- static/koboldai.js | 22 +++++++++++++++++++++- 3 files changed, 31 insertions(+), 7 deletions(-) diff --git a/aiserver.py b/aiserver.py index 5836d4c2..bcc52847 100644 --- a/aiserver.py +++ b/aiserver.py @@ -467,6 +467,7 @@ app.secret_key = secrets.token_hex() app.config['SESSION_TYPE'] = 'filesystem' app.config['TEMPLATES_AUTO_RELOAD'] = True socketio = SocketIO(app, async_method="eventlet", manage_session=False, cors_allowed_origins='*', max_http_buffer_size=10_000_000) +logger.add(lambda msg: socketio.emit("log_message", json.loads(msg), broadcast=True, room="UI_2"), serialize=True, colorize=True) #socketio = SocketIO(app, async_method="eventlet", manage_session=False, cors_allowed_origins='*', logger=True, engineio_logger=True) koboldai_vars = koboldai_settings.koboldai_vars(session, socketio) @@ -8441,7 +8442,10 @@ def show_vars(): json_data['system_settings'] = json.loads(koboldai_vars.to_json("system_settings")) return json_data - +@socketio.on("trigger_error") +@logger.catch +def trigger_error(data): + temp = this_var_doesnt_exist #==================================================================# class EmptySchema(KoboldSchema): @@ -11187,8 +11191,9 @@ def startup(): socketio.start_background_task(load_model, **{'initial_load':True}) print("", end="", flush=True) -if __name__ == "__main__": +@logger.catch +def run(): general_startup() # Start flask & SocketIO logger.init("Flask", status="Starting") @@ -11264,8 +11269,9 @@ if __name__ == "__main__": koboldai_vars.serverstarted = True socketio.run(app, port=port) logger.init("Webserver", status="Closed") - - + +if __name__ == "__main__": + run() else: general_startup() # Start flask & SocketIO diff --git a/static/koboldai.css b/static/koboldai.css index ced38455..ed6c5490 100644 --- a/static/koboldai.css +++ b/static/koboldai.css @@ -1643,8 +1643,6 @@ body { #error_message.popup { background-color: var(--error); color: var(--error_text); - height: 30vh; - top: 35vh; overflow: hidden; } diff --git a/static/koboldai.js b/static/koboldai.js index c0212c16..11ab4e50 100644 --- a/static/koboldai.js +++ b/static/koboldai.js @@ -30,6 +30,7 @@ socket.on('load_cookies', function(data){load_cookies(data)}); socket.on('load_tweaks', function(data){load_tweaks(data);}); socket.on("wi_results", updateWISearchListings); socket.on("request_prompt_config", configurePrompt); +socket.on("log_message", function(data){process_log_message(data)}); //socket.onAny(function(event_name, data) {console.log({"event": event_name, "class": data.classname, "data": data});}); var presets = {}; @@ -51,6 +52,7 @@ var colab_cookies = null; var wi_finder_data = []; var wi_finder_offset = 0; var selected_game_chunk = null; +var log = []; // name, desc, icon, func const finder_actions = [ @@ -1952,7 +1954,14 @@ function world_info_folder(data) { function show_error_message(data) { error_message_box = document.getElementById('error_message'); error_message_box.classList.remove("hidden"); - error_message_box.querySelector("#popup_list_area").textContent = data; + error_box_data = error_message_box.querySelector("#popup_list_area") + //clear out the error box + while (error_box_data.firstChild) { + error_box_data.removeChild(error_box_data.firstChild); + } + for (item of data.split("\n")) { + $e("div", error_box_data, {'textContent': item}) + } } function do_wpp(wpp_area) { @@ -1993,6 +2002,17 @@ function load_cookies(data) { } } +function process_log_message(data) { + let level = data['record']['level']['name']; + let message = data['record']['message']; + let time = data['record']['time']['repr']; + let full_log = data['text']; + log.push({'level': level, 'message': message, 'time': time, 'full_log': full_log}); + if (level == 'ERROR') { + show_error_message(full_log); + } +} + //--------------------------------------------UI to Server Functions---------------------------------- function unload_userscripts() { files_to_unload = document.getElementById('loaded_userscripts');