Merge pull request #114 from Yusarina/logging-improvements

Improvement to logging.
This commit is contained in:
Onan Chew
2025-02-07 12:06:45 -05:00
committed by GitHub
+7 -5
View File
@@ -4,6 +4,7 @@ from typing import Optional, Any
from bpy.types import Context from bpy.types import Context
logger = logging.getLogger('avatar_toolkit') logger = logging.getLogger('avatar_toolkit')
_original_error = logger.error
def configure_logging(enabled: bool = False) -> None: def configure_logging(enabled: bool = False) -> None:
"""Configure logging for Avatar Toolkit""" """Configure logging for Avatar Toolkit"""
@@ -16,15 +17,16 @@ def configure_logging(enabled: bool = False) -> None:
if enabled: if enabled:
handler = logging.StreamHandler() handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG) handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s\n%(exc_info)s' if enabled else '%(message)s') formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter) handler.setFormatter(formatter)
logger.addHandler(handler) logger.addHandler(handler)
# Override error logging to include traceback
def error_with_traceback(msg, *args, **kwargs): def error_with_traceback(msg, *args, **kwargs):
if kwargs.get('exc_info', False): if kwargs.get('exc_info', False) or isinstance(msg, Exception):
msg = f"{msg}\n{traceback.format_exc()}" full_msg = f"{msg}\n{traceback.format_exc()}"
logger.error(msg, *args, **kwargs) _original_error(full_msg, *args, **{**kwargs, 'exc_info': False})
else:
_original_error(msg, *args, **kwargs)
logger.error = error_with_traceback logger.error = error_with_traceback