diff --git a/.gitignore b/.gitignore index a6c45d3..b8a2964 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ __pycache__/ client.db .DS_Store +contact.log diff --git a/globals.py b/globals.py index 9aec34d..917a645 100644 --- a/globals.py +++ b/globals.py @@ -2,6 +2,7 @@ import os app_directory = os.path.dirname(os.path.abspath(__file__)) db_file_path = os.path.join(app_directory, "client.db") +log_file_path = os.path.join(app_directory, "client.log") all_messages = {} channel_list = [] diff --git a/main.py b/main.py index 7d4c998..4d6fcf8 100644 --- a/main.py +++ b/main.py @@ -9,6 +9,8 @@ V 1.0.1 import curses from pubsub import pub import os +import logging +import traceback from utilities.arg_parser import setup_parser from utilities.interfaces import initialize_interface @@ -23,18 +25,34 @@ os.environ["NCURSES_NO_UTF8_ACS"] = "1" os.environ["TERM"] = "screen" os.environ["LANG"] = "C.UTF-8" -def main(stdscr): - draw_splash(stdscr) - parser = setup_parser() - args = parser.parse_args() - globals.interface = initialize_interface(args) - globals.channel_list = get_channels() - pub.subscribe(on_receive, 'meshtastic.receive') - globals.node_list = get_node_list() - init_nodedb() - load_messages_from_db() - main_ui(stdscr) +# Configure logging +# Run `tail -f contact.log` in another terminal to view live +logging.basicConfig( + filename=globals.log_file_path, + level=logging.INFO, # DEBUG, INFO, WARNING, ERROR, CRITICAL) + format="%(asctime)s - %(levelname)s - %(message)s" +) +def main(stdscr): + try: + draw_splash(stdscr) + parser = setup_parser() + args = parser.parse_args() + globals.interface = initialize_interface(args) + globals.channel_list = get_channels() + pub.subscribe(on_receive, 'meshtastic.receive') + globals.node_list = get_node_list() + init_nodedb() + load_messages_from_db() + main_ui(stdscr) + except Exception as e: + logging.error("An error occurred: %s", e) + logging.error("Traceback: %s", traceback.format_exc()) + raise if __name__ == "__main__": - curses.wrapper(main) + try: + curses.wrapper(main) + except Exception as e: + logging.error("Fatal error in curses wrapper: %s", e) + logging.error("Traceback: %s", traceback.format_exc()) \ No newline at end of file