docs: def addLogHandler(func):
      """
      Add a custom log handler.
  
      @param func: a function object with prototype (level, object, category,
                   message) where level is either ERROR, WARN, INFO, DEBUG, or
                   LOG, and the rest of the arguments are strings or None. Use
                   getLevelName(level) to get a printable name for the log level.
      @type func:  a callable function
  
      @raises TypeError: if func is not a callable
      """
  
      if not callable(func):
          raise TypeError("func must be callable")
  
      if func not in _log_handlers:
          _log_handlers.append(func)