Skip to content

Commit f9ff263

Browse files
committed
(feat) Start of persistent logging
1 parent 3d1abea commit f9ff263

File tree

1 file changed

+48
-2
lines changed

1 file changed

+48
-2
lines changed

BabbleApp/babbleapp.py

Lines changed: 48 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,8 @@
1717
"""
1818

1919
import os
20+
import sys
21+
import logging
2022
import PySimpleGUI as sg
2123
import queue
2224
import requests
@@ -25,7 +27,7 @@
2527
from babble_model_loader import *
2628
from camera_widget import CameraWidget
2729
from config import BabbleConfig
28-
from tab import CamInfo, Tab
30+
from tab import Tab
2931
from osc import VRChatOSCReceiver, VRChatOSC
3032
from general_settings_widget import SettingsWidget
3133
from algo_settings_widget import AlgoSettingsWidget
@@ -60,6 +62,50 @@
6062
page_url = "https://github.com/SummerSigh/ProjectBabble/releases/latest"
6163
appversion = "Babble v2.1.0 Beta"
6264

65+
def setupLogging():
66+
# Determine the user's Documents directory
67+
documents_dir = os.path.join(os.path.expanduser("~"), "Documents")
68+
log_dir = os.path.join(documents_dir, "ProjectBabble")
69+
os.makedirs(log_dir, exist_ok=True)
70+
71+
log_file = os.path.join(log_dir, "latest.log")
72+
73+
# Set up logging
74+
logger = logging.getLogger("debug_logger")
75+
logger.setLevel(logging.DEBUG)
76+
77+
# File handler for logging to file
78+
file_handler = logging.FileHandler(log_file, mode='w', encoding='utf-8')
79+
file_handler.setLevel(logging.DEBUG)
80+
formatter = logging.Formatter('%(asctime)s - %(message)s', datefmt='%Y-%m-%d %H:%M:%S')
81+
file_handler.setFormatter(formatter)
82+
83+
logger.addHandler(file_handler)
84+
85+
# Optionally output to console as well
86+
console_handler = logging.StreamHandler(sys.stdout)
87+
console_handler.setLevel(logging.DEBUG)
88+
console_handler.setFormatter(formatter)
89+
logger.addHandler(console_handler)
90+
91+
# Redirect stdout and stderr to logger
92+
class StreamToLogger:
93+
def __init__(self, stream, log_level):
94+
self.stream = stream
95+
self.log_level = log_level
96+
97+
def write(self, message):
98+
if message.strip():
99+
logger.log(self.log_level, message.strip())
100+
self.stream.write(message)
101+
self.stream.flush()
102+
103+
def flush(self):
104+
self.stream.flush()
105+
106+
sys.stdout = StreamToLogger(sys.stdout, logging.INFO)
107+
sys.stderr = StreamToLogger(sys.stderr, logging.ERROR)
108+
63109
def timerResolution(toggle):
64110
if winmm != None:
65111
if toggle:
@@ -72,6 +118,7 @@ def timerResolution(toggle):
72118

73119
def main():
74120
EnsurePath()
121+
setupLogging()
75122

76123
# Get Configuration
77124
config: BabbleConfig = BabbleConfig.load()
@@ -343,6 +390,5 @@ def main():
343390
if setting.started():
344391
setting.render(window, event, values)
345392

346-
347393
if __name__ == "__main__":
348394
main()

0 commit comments

Comments
 (0)