text: import logging
  
  from django.template import Engine, Variable, VariableDoesNotExist
  from django.test import SimpleTestCase
  
  
  class VariableResolveLoggingTests(SimpleTestCase):
      loglevel = logging.DEBUG
  
      def test_log_on_variable_does_not_exist_silent(self):
          class TestObject:
              class SilentDoesNotExist(Exception):
                  silent_variable_failure = True
  
              @property
              def template_name(self):
                  return "template_name"
  
              @property
              def template(self):
                  return Engine().from_string('')
  
              @property
              def article(self):
                  raise TestObject.SilentDoesNotExist("Attribute does not exist.")
  
              def __iter__(self):
                  return iter(attr for attr in dir(TestObject) if attr[:2] != "__")
  
              def __getitem__(self, item):
                  return self.__dict__[item]
  
          with self.assertLogs('django.template', self.loglevel) as cm:
              Variable('article').resolve(TestObject())
  
          self.assertEqual(len(cm.records), 1)
          log_record = cm.records[0]
          self.assertEqual(
              log_record.getMessage(),
              "Exception while resolving variable 'article' in template 'template_name'."
          )
          self.assertIsNotNone(log_record.exc_info)
          raised_exception = log_record.exc_info[1]
          self.assertEqual(str(raised_exception), 'Attribute does not exist.')
  
      def test_log_on_variable_does_not_exist_not_silent(self):
          with self.assertLogs('django.template', self.loglevel) as cm:
              with self.assertRaises(VariableDoesNotExist):
                  Variable('article.author').resolve({'article': {'section': 'News'}})
  
          self.assertEqual(len(cm.records), 1)
          log_record = cm.records[0]
          self.assertEqual(
              log_record.getMessage(),
              "Exception while resolving variable 'author' in template 'unknown'."
          )
          self.assertIsNotNone(log_record.exc_info)
          raised_exception = log_record.exc_info[1]
          self.assertEqual(
              str(raised_exception),
              "Failed lookup for key [author] in {'section': 'News'}"
          )
  
      def test_no_log_when_variable_exists(self):
          with self.assertRaisesMessage(AssertionError, 'no logs'):
              with self.assertLogs('django.template', self.loglevel):
                  Variable('article.section').resolve({'article': {'section': 'News'}})
  