17
17
"""
18
18
19
19
import os
20
+ import sys
21
+ import logging
20
22
import PySimpleGUI as sg
21
23
import queue
22
24
import requests
25
27
from babble_model_loader import *
26
28
from camera_widget import CameraWidget
27
29
from config import BabbleConfig
28
- from tab import CamInfo , Tab
30
+ from tab import Tab
29
31
from osc import VRChatOSCReceiver , VRChatOSC
30
32
from general_settings_widget import SettingsWidget
31
33
from algo_settings_widget import AlgoSettingsWidget
60
62
page_url = "https://github.com/SummerSigh/ProjectBabble/releases/latest"
61
63
appversion = "Babble v2.1.0 Beta"
62
64
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
+
63
109
def timerResolution (toggle ):
64
110
if winmm != None :
65
111
if toggle :
@@ -72,6 +118,7 @@ def timerResolution(toggle):
72
118
73
119
def main ():
74
120
EnsurePath ()
121
+ setupLogging ()
75
122
76
123
# Get Configuration
77
124
config : BabbleConfig = BabbleConfig .load ()
@@ -343,6 +390,5 @@ def main():
343
390
if setting .started ():
344
391
setting .render (window , event , values )
345
392
346
-
347
393
if __name__ == "__main__" :
348
394
main ()
0 commit comments