Skip to content

Add timestamp to unhandled exception output #11

@rocky-d

Description

@rocky-d

Enhancement: Timestamp on crash reports

Hi! Looking at the exception handler in main.py:

def handle_exception(exc_type, exc_value, exc_traceback):
    print("Exception type:", exc_type)
    print("Exception value:", exc_value)
    trace_details = traceback.format_exception(exc_type, exc_value, exc_traceback)
    trace_string = "".join(trace_details)
    print("Exception traceback:", trace_string)
    message = f"An error occurred!\n\n{exc_value}\n\n{trace_string}"
    interface.display_error_message(message)
    original_excepthook(exc_type, exc_value, exc_traceback)

sys.excepthook = handle_exception

The handler captures and displays exceptions well, but doesn't include when the crash happened — which is particularly valuable for a data collection tool like DuckTrack where you need to correlate crashes with session events.

Suggestion: dttb is a tiny package that patches sys.excepthook to add timestamps automatically:

import dttb

def my_callback(args: dttb.CallbackArgs) -> None:
    # args.now — datetime of exception
    # args.exc_type, args.exc_value, args.exc_traceback — standard exception info
    trace_string = "".join(traceback.format_exception(args.exc_type, args.exc_value, args.exc_traceback))
    message = f"[{args.now}] An error occurred!\n\n{args.exc_value}\n\n{trace_string}"
    interface.display_error_message(message)

dttb.apply(callback=my_callback)

This integrates cleanly with your existing handler pattern and makes the timestamp available both in the dialog and in any logs.

pip install dttbhttps://github.com/rocky-d/dttb

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions