Change Python log level from UI

Location - https://files.catbox.moe/4umtyc.png

E.g. can be useful to narrow down some issues during ifc import
This commit is contained in:
Andrej730
2025-07-16 15:03:33 +05:00
parent 00f7871386
commit 55d533309e
3 changed files with 31 additions and 0 deletions
@@ -20,6 +20,7 @@ import bpy
from . import ui, prop, operator
classes = (
operator.ChangeLogLevel,
operator.ConvertToBlender,
operator.CopyDebugInformation,
operator.CreateAllShapes,
@@ -1003,6 +1003,31 @@ class ToggleDetailedIOSLogs(bpy.types.Operator):
return {"FINISHED"}
LogLevelType = Literal["NOTSET", "DEBUG", "INFO", "WARNING", "ERROR", "CRITICAL"]
class ChangeLogLevel(bpy.types.Operator):
bl_idname = "bim.change_log_level"
bl_label = "Change Log Level "
bl_options = {"REGISTER", "UNDO"}
bl_description = "Change general log level across all Python code in Blender"
log_level: bpy.props.EnumProperty( # pyright: ignore[reportRedeclaration]
name="Log Level",
items=((i, i, "") for i in get_args(LogLevelType)),
default="WARNING",
)
if TYPE_CHECKING:
log_level: LogLevelType
def execute(self, context):
root = logging.getLogger()
root.setLevel(self.log_level)
self.report({"INFO"}, f"Log level changed to {self.log_level}.")
return {"FINISHED"}
class RestartBlender(bpy.types.Operator):
bl_idname = "bim.restart_blender"
bl_label = "Restart Blender"
+5
View File
@@ -33,6 +33,7 @@ class BIM_PT_debug(Panel):
def draw(self, context):
assert self.layout
layout = self.layout
assert (wm := bpy.context.window_manager)
props = tool.Debug.get_debug_props()
bim_props = tool.Blender.get_bim_props()
@@ -83,6 +84,10 @@ class BIM_PT_debug(Panel):
row = layout.row()
row.operator("bim.toggle_detailed_ios_logs")
row = layout.row(align=True)
row.prop(wm.operator_properties_last(bpy.ops.bim.change_log_level.idname()), "log_level", text="")
row.operator("bim.change_log_level")
row = layout.row()
row.operator("bim.restart_blender")