| 8 | |
| 9 | |
| 10 | class EventLog: |
| 11 | def __init__(self, event_name): |
| 12 | self.event_name = event_name |
| 13 | self.start_time = None |
| 14 | self.end_time = None |
| 15 | self.child_events = {} |
| 16 | |
| 17 | def record_start_time(self): |
| 18 | self.start_time = datetime.now( |
| 19 | pytz.utc |
| 20 | ) # Store in UTC for consistent timezone conversion |
| 21 | |
| 22 | def record_end_time(self): |
| 23 | self.end_time = datetime.now( |
| 24 | pytz.utc |
| 25 | ) # Store in UTC for consistent timezone conversion |
| 26 | |
| 27 | def get_total_time(self): |
| 28 | if self.start_time and self.end_time: |
| 29 | return (self.end_time - self.start_time).total_seconds() |
| 30 | return 0 |
| 31 | |
| 32 | def get_start_time(self): |
| 33 | if self.start_time: |
| 34 | # Format to milliseconds |
| 35 | return self.start_time.astimezone(CALIFORNIA_TZ).strftime( |
| 36 | "%Y-%m-%d %H:%M:%S.%f" |
| 37 | )[:-3] |
| 38 | return None |
| 39 | |
| 40 | def get_end_time(self): |
| 41 | if self.end_time: |
| 42 | # Format to milliseconds |
| 43 | return self.end_time.astimezone(CALIFORNIA_TZ).strftime( |
| 44 | "%Y-%m-%d %H:%M:%S.%f" |
| 45 | )[:-3] |
| 46 | return None |
| 47 | |
| 48 | def add_child_event(self, child_event): |
| 49 | self.child_events[child_event.event_name] = child_event |
| 50 | |
| 51 | def get_child_events(self): |
| 52 | return self.child_events |
| 53 | |
| 54 | |
| 55 | class LoggingWrapper: |