Merge pull request #158 from Yusarina/logging-update

Logging update
This commit is contained in:
Onan Chew
2025-04-12 11:12:04 -04:00
committed by GitHub
8 changed files with 78 additions and 14 deletions
+5
View File
@@ -25,6 +25,7 @@ def register():
from . import core from . import core
from .core import auto_load from .core import auto_load
from .core.logging_setup import configure_logging from .core.logging_setup import configure_logging
from .core.addon_preferences import get_preference
# Initialize logging # Initialize logging
configure_logging(False) configure_logging(False)
@@ -36,6 +37,10 @@ def register():
if not hasattr(bpy.types.Scene, "avatar_toolkit"): if not hasattr(bpy.types.Scene, "avatar_toolkit"):
from .core.properties import register as register_properties from .core.properties import register as register_properties
register_properties() register_properties()
if hasattr(bpy.types.Scene, "avatar_toolkit"):
log_level = get_preference("log_level", "WARNING")
configure_logging(get_preference("enable_logging", False), log_level)
print("Registration complete") print("Registration complete")
+2 -1
View File
@@ -27,7 +27,8 @@ def init() -> None:
configure_logging(False) configure_logging(False)
from .addon_preferences import get_preference from .addon_preferences import get_preference
configure_logging(get_preference("enable_logging", False)) log_level = get_preference("log_level", "WARNING")
configure_logging(get_preference("enable_logging", False), log_level)
print("Auto-load init starting") print("Auto-load init starting")
+18 -13
View File
@@ -6,17 +6,28 @@ from bpy.types import Context
logger = logging.getLogger('avatar_toolkit') logger = logging.getLogger('avatar_toolkit')
_original_error = logger.error _original_error = logger.error
def configure_logging(enabled: bool = False) -> None: def configure_logging(enabled: bool = False, level: str = "WARNING") -> None:
"""Configure logging for Avatar Toolkit""" """Configure logging for Avatar Toolkit """
logger.setLevel(logging.DEBUG if enabled else logging.WARNING) level_map = {
"DEBUG": logging.DEBUG,
"INFO": logging.INFO,
"WARNING": logging.WARNING,
"ERROR": logging.ERROR
}
log_level = level_map.get(level, logging.WARNING)
if enabled:
logger.setLevel(log_level)
else:
logger.setLevel(logging.ERROR) # We should still log errors when logging is disabled so we don't have silent failures
# Remove existing handlers
for handler in logger.handlers[:]: for handler in logger.handlers[:]:
logger.removeHandler(handler) logger.removeHandler(handler)
if enabled: if enabled:
handler = logging.StreamHandler() handler = logging.StreamHandler()
handler.setLevel(logging.DEBUG) handler.setLevel(log_level)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(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)
@@ -34,12 +45,6 @@ def update_logging_state(self: Any, context: Context) -> None:
"""Update logging state based on user preference""" """Update logging state based on user preference"""
from .addon_preferences import save_preference from .addon_preferences import save_preference
enabled = self.enable_logging enabled = self.enable_logging
level = self.log_level if hasattr(self, "log_level") else "WARNING"
save_preference("enable_logging", enabled) save_preference("enable_logging", enabled)
configure_logging(enabled) configure_logging(enabled, level)
def highlight_problem_bones(self: Any, context: Context) -> None:
"""Log when problem bones are highlighted"""
from .addon_preferences import save_preference
enabled = self.highlight_problem_bones
save_preference("highlight_problem_bones", enabled)
logger.debug(f"Problem bone highlighting {'enabled' if enabled else 'disabled'}")
+20
View File
@@ -43,6 +43,13 @@ def update_logging_state(self: PropertyGroup, context: Context) -> None:
from .logging_setup import configure_logging from .logging_setup import configure_logging
configure_logging(self.enable_logging) configure_logging(self.enable_logging)
def update_log_level(self: PropertyGroup, context: Context) -> None:
"""Updates log level and configures logging"""
logger.info(f"Updating log level to: {self.log_level}")
save_preference("log_level", self.log_level)
from .logging_setup import configure_logging
configure_logging(self.enable_logging, self.log_level)
def update_shape_intensity(self: PropertyGroup, context: Context) -> None: def update_shape_intensity(self: PropertyGroup, context: Context) -> None:
"""Updates shape key intensity and refreshes preview""" """Updates shape key intensity and refreshes preview"""
@@ -588,6 +595,19 @@ class AvatarToolkitSceneProperties(PropertyGroup):
default=True default=True
) )
log_level: EnumProperty(
name=t("Settings.log_level"),
description=t("Settings.log_level_desc"),
items=[
('DEBUG', t("Settings.log_level.debug"), t("Settings.log_level.debug_desc")),
('INFO', t("Settings.log_level.info"), t("Settings.log_level.info_desc")),
('WARNING', t("Settings.log_level.warning"), t("Settings.log_level.warning_desc")),
('ERROR', t("Settings.log_level.error"), t("Settings.log_level.error_desc")),
],
default=get_preference("log_level", "WARNING"),
update=update_log_level
)
def register() -> None: def register() -> None:
"""Register the Avatar Toolkit property group""" """Register the Avatar Toolkit property group"""
logger.info("Registering Avatar Toolkit properties") logger.info("Registering Avatar Toolkit properties")
+10
View File
@@ -526,6 +526,16 @@
"Settings.highlight_problem_bones": "Highlight Problem Bones", "Settings.highlight_problem_bones": "Highlight Problem Bones",
"Settings.highlight_problem_bones_desc": "Highlight bones with validation issues in the viewport", "Settings.highlight_problem_bones_desc": "Highlight bones with validation issues in the viewport",
"Settings.bone_highlighting": "Bone Highlighting", "Settings.bone_highlighting": "Bone Highlighting",
"Settings.log_level": "Log Level",
"Settings.log_level_desc": "Select the detail level for debug logging",
"Settings.log_level.debug": "Debug",
"Settings.log_level.debug_desc": "Show all log messages including detailed debug information",
"Settings.log_level.info": "Info",
"Settings.log_level.info_desc": "Show informational messages, warnings and errors",
"Settings.log_level.warning": "Warning",
"Settings.log_level.warning_desc": "Show only warnings and errors",
"Settings.log_level.error": "Error",
"Settings.log_level.error_desc": "Show only error messages",
"Language.auto": "Automatic", "Language.auto": "Automatic",
"Language.en_US": "English", "Language.en_US": "English",
"Language.ja_JP": "Japanese", "Language.ja_JP": "Japanese",
+10
View File
@@ -514,6 +514,16 @@
"Settings.highlight_problem_bones": "問題のあるボーンを強調表示", "Settings.highlight_problem_bones": "問題のあるボーンを強調表示",
"Settings.highlight_problem_bones_desc": "ビューポートで検証に問題のあるボーンを強調表示", "Settings.highlight_problem_bones_desc": "ビューポートで検証に問題のあるボーンを強調表示",
"Settings.bone_highlighting": "ボーンの強調表示", "Settings.bone_highlighting": "ボーンの強調表示",
"Settings.log_level": "ログレベル",
"Settings.log_level_desc": "デバッグログの詳細レベルを選択",
"Settings.log_level.debug": "デバッグ",
"Settings.log_level.debug_desc": "詳細なデバッグ情報を含むすべてのログメッセージを表示",
"Settings.log_level.info": "情報",
"Settings.log_level.info_desc": "情報メッセージ、警告、エラーを表示",
"Settings.log_level.warning": "警告",
"Settings.log_level.warning_desc": "警告とエラーのみを表示",
"Settings.log_level.error": "エラー",
"Settings.log_level.error_desc": "エラーメッセージのみを表示",
"Language.auto": "自動", "Language.auto": "自動",
"Language.en_US": "英語", "Language.en_US": "英語",
"Language.ja_JP": "日本語", "Language.ja_JP": "日本語",
+10
View File
@@ -514,6 +514,16 @@
"Settings.highlight_problem_bones": "문제 본 강조 표시", "Settings.highlight_problem_bones": "문제 본 강조 표시",
"Settings.highlight_problem_bones_desc": "뷰포트에서 검증 문제가 있는 본 강조 표시", "Settings.highlight_problem_bones_desc": "뷰포트에서 검증 문제가 있는 본 강조 표시",
"Settings.bone_highlighting": "본 강조 표시", "Settings.bone_highlighting": "본 강조 표시",
"Settings.log_level": "로그 레벨",
"Settings.log_level_desc": "디버그 로깅의 상세 수준 선택",
"Settings.log_level.debug": "디버그",
"Settings.log_level.debug_desc": "상세한 디버그 정보를 포함한 모든 로그 메시지 표시",
"Settings.log_level.info": "정보",
"Settings.log_level.info_desc": "정보 메시지, 경고 및 오류 표시",
"Settings.log_level.warning": "경고",
"Settings.log_level.warning_desc": "경고 및 오류만 표시",
"Settings.log_level.error": "오류",
"Settings.log_level.error_desc": "오류 메시지만 표시",
"Language.auto": "자동", "Language.auto": "자동",
"Language.en_US": "영어", "Language.en_US": "영어",
"Language.ja_JP": "일본어", "Language.ja_JP": "일본어",
+3
View File
@@ -89,3 +89,6 @@ class AvatarToolKit_PT_SettingsPanel(Panel):
if props.debug_expand: if props.debug_expand:
col = debug_box.column(align=True) col = debug_box.column(align=True)
col.prop(props, "enable_logging") col.prop(props, "enable_logging")
if props.enable_logging:
col.prop(props, "log_level")