@@ -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
@@ -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
@@ -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'}")
|
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
@@ -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",
|
||||||
|
|||||||
@@ -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": "日本語",
|
||||||
|
|||||||
@@ -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": "일본어",
|
||||||
|
|||||||
@@ -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")
|
||||||
Reference in New Issue
Block a user