@@ -25,6 +25,7 @@ def register():
|
||||
from . import core
|
||||
from .core import auto_load
|
||||
from .core.logging_setup import configure_logging
|
||||
from .core.addon_preferences import get_preference
|
||||
|
||||
# Initialize logging
|
||||
configure_logging(False)
|
||||
@@ -36,6 +37,10 @@ def register():
|
||||
if not hasattr(bpy.types.Scene, "avatar_toolkit"):
|
||||
from .core.properties import register as 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")
|
||||
|
||||
|
||||
+2
-1
@@ -27,7 +27,8 @@ def init() -> None:
|
||||
configure_logging(False)
|
||||
|
||||
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")
|
||||
|
||||
|
||||
+18
-13
@@ -6,17 +6,28 @@ from bpy.types import Context
|
||||
logger = logging.getLogger('avatar_toolkit')
|
||||
_original_error = logger.error
|
||||
|
||||
def configure_logging(enabled: bool = False) -> None:
|
||||
"""Configure logging for Avatar Toolkit"""
|
||||
logger.setLevel(logging.DEBUG if enabled else logging.WARNING)
|
||||
def configure_logging(enabled: bool = False, level: str = "WARNING") -> None:
|
||||
"""Configure logging for Avatar Toolkit """
|
||||
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[:]:
|
||||
logger.removeHandler(handler)
|
||||
|
||||
if enabled:
|
||||
handler = logging.StreamHandler()
|
||||
handler.setLevel(logging.DEBUG)
|
||||
handler.setLevel(log_level)
|
||||
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
@@ -34,12 +45,6 @@ def update_logging_state(self: Any, context: Context) -> None:
|
||||
"""Update logging state based on user preference"""
|
||||
from .addon_preferences import save_preference
|
||||
enabled = self.enable_logging
|
||||
level = self.log_level if hasattr(self, "log_level") else "WARNING"
|
||||
save_preference("enable_logging", enabled)
|
||||
configure_logging(enabled)
|
||||
|
||||
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'}")
|
||||
configure_logging(enabled, level)
|
||||
|
||||
@@ -43,6 +43,13 @@ def update_logging_state(self: PropertyGroup, context: Context) -> None:
|
||||
from .logging_setup import configure_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:
|
||||
"""Updates shape key intensity and refreshes preview"""
|
||||
@@ -588,6 +595,19 @@ class AvatarToolkitSceneProperties(PropertyGroup):
|
||||
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:
|
||||
"""Register the Avatar Toolkit property group"""
|
||||
logger.info("Registering Avatar Toolkit properties")
|
||||
|
||||
@@ -526,6 +526,16 @@
|
||||
"Settings.highlight_problem_bones": "Highlight Problem Bones",
|
||||
"Settings.highlight_problem_bones_desc": "Highlight bones with validation issues in the viewport",
|
||||
"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.en_US": "English",
|
||||
"Language.ja_JP": "Japanese",
|
||||
|
||||
@@ -514,6 +514,16 @@
|
||||
"Settings.highlight_problem_bones": "問題のあるボーンを強調表示",
|
||||
"Settings.highlight_problem_bones_desc": "ビューポートで検証に問題のあるボーンを強調表示",
|
||||
"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.en_US": "英語",
|
||||
"Language.ja_JP": "日本語",
|
||||
|
||||
@@ -514,6 +514,16 @@
|
||||
"Settings.highlight_problem_bones": "문제 본 강조 표시",
|
||||
"Settings.highlight_problem_bones_desc": "뷰포트에서 검증 문제가 있는 본 강조 표시",
|
||||
"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.en_US": "영어",
|
||||
"Language.ja_JP": "일본어",
|
||||
|
||||
@@ -89,3 +89,6 @@ class AvatarToolKit_PT_SettingsPanel(Panel):
|
||||
if props.debug_expand:
|
||||
col = debug_box.column(align=True)
|
||||
col.prop(props, "enable_logging")
|
||||
|
||||
if props.enable_logging:
|
||||
col.prop(props, "log_level")
|
||||
Reference in New Issue
Block a user