code: def assert_log(self, step, logtype, value, exact_match=True):
      log = self.get_log(step, logtype)
      if (exact_match and log != value) or (
          not exact_match and value not in log
      ):
          raise AssertLogFailed(
              "Task '%s/%s' expected %s log '%s' but got '%s'"
              % (self.run_id, step, logtype, repr(value), repr(log))
          )
      return True
  
imports: import sys
  import subprocess
  import json
  from collections import namedtuple
  from tempfile import NamedTemporaryFile
  from metaflow.includefile import IncludedFile
  from metaflow.util import is_stringish
  from .None import MetaflowCheck, AssertArtifactFailed, AssertLogFailed, truncate, AssertCardFailed
label_desc: Use image node_id 5 for calling the CliCheck obj's underlying member method code with example usage: obj.assert_log(step, logtype, value, exact_match) and returns: True