{"id":1064,"date":"2026-01-09T03:34:52","date_gmt":"2026-01-09T11:34:52","guid":{"rendered":"http:\/\/fx-td.com\/houdiniandchill\/?p=1064"},"modified":"2026-01-09T03:41:17","modified_gmt":"2026-01-09T11:41:17","slug":"archived-post-by-igor-elovikov-2","status":"publish","type":"post","link":"http:\/\/fx-td.com\/houdiniandchill\/2026\/01\/09\/archived-post-by-igor-elovikov-2\/","title":{"rendered":"Archived post by igor.elovikov"},"content":{"rendered":"<div class=\"postie-post\">\n<p class=\"\">i usually do this:<br \/>\n&#8220;`py HOU_SEVERITY_MAP = {     logging.DEBUG: hou.severityType.Message,     logging.INFO: hou.severityType.ImportantMessage,     logging.WARNING: hou.severityType.Warning,     logging.ERROR: hou.severityType.Error,     logging.CRITICAL: hou.severityType.Fatal, }<br \/>\nclass HouLogHandler(logging.StreamHandler):     def __init__(self):         super().__init__(self)<br \/>\n    def emit(self, record: logging.LogRecord):         hlog_entry = hou.logging.LogEntry(             record.msg,             source=record.name,             severity=HOU_SEVERITY_MAP[record.levelno],         )         hou.logging.log(hlog_entry) &#8220;`<br \/>\nnow i can connect this handler to builtin logging:<br \/>\n&#8220;`py import logging<br \/>\nlogger = logging.getLogger(&#8220;GLTF Exporter&#8221;) logger.handlers = [HouLogHandler()] # or adding handler to default stdout if i&#8217;m headless logger.setLevel(logging.DEBUG)<br \/>\nlogger.info(&#8220;GLTF Exporter imported&#8221;) &#8220;`<\/p>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>i usually do this: &#8220;`py HOU_SEVERITY_MAP = { logging.DEBUG: hou.severityType.Message, logging.INFO: hou.severityType.ImportantMessage, logging.WARNING: hou.severityType.Warning, logging.ERROR: hou.severityType.Error, logging.CRITICAL: hou.severityType.Fatal, } class HouLogHandler(logging.StreamHandler): def __init__(self): super().__init__(self) def emit(self, record: logging.LogRecord): hlog_entry = hou.logging.LogEntry( record.msg, source=record.name, severity=HOU_SEVERITY_MAP[record.levelno], ) hou.logging.log(hlog_entry) &#8220;` now i can connect this handler to builtin logging: &#8220;`py import logging logger = logging.getLogger(&#8220;GLTF Exporter&#8221;) logger.handlers = &hellip; <a href=\"http:\/\/fx-td.com\/houdiniandchill\/2026\/01\/09\/archived-post-by-igor-elovikov-2\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Archived post by igor.elovikov<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[4],"tags":[],"_links":{"self":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts\/1064"}],"collection":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/comments?post=1064"}],"version-history":[{"count":0,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/posts\/1064\/revisions"}],"wp:attachment":[{"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/media?parent=1064"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/categories?post=1064"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/fx-td.com\/houdiniandchill\/wp-json\/wp\/v2\/tags?post=1064"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}