docstr: Given a message dictionary, we want to loop through the key, value
  pairs and convert some attributes to strings (e.g., jobs are fine to be
  represnted as names) and return a dictionary.
code: def _parse_message(self, msg):
      """Given a message dictionary, we want to loop through the key, value
      pairs and convert some attributes to strings (e.g., jobs are fine to be
      represnted as names) and return a dictionary.
      """
      result = {}
      for key, value in msg.items():
          # For a job, the name is sufficient
          if key == "job":
              result[key] = str(value)
  
          # For an exception, return the name and a message
          elif key == "exception":
              result[key] = "{}: {}".format(
                  msg["exception"].__class__.__name__,
                  msg["exception"] or "Exception",
              )
  
          # All other fields are json serializable
          else:
              result[key] = value
  
      # Return a json dumped string
      return json.dumps(result)
  
imports: import logging
  import platform
  import time
  import datetime
  import sys
  import os
  import json
  import threading
  from functools import partial
  import inspect
  import textwrap
label_desc: Use image node_id 6 for calling the WMSLogger obj's underlying member method code with example usage: obj._parse_message(msg) and returns: json