docs: def get_log_entries(self, start_date=None, end_date=None, filters=list(),
                          limit=None):
          '''
          See feat.agencies.interface.IJournalReader.get_log_entres
          '''
          query = text_helper.format_block('''
          SELECT "localhost",
                 logs.message,
                 logs.level,
                 logs.category,
                 logs.log_name,
                 logs.file_path,
                 logs.line_num,
                 logs.timestamp
          FROM logs
          WHERE 1
          ''')
          query = self._add_timestamp_condition_sql(query, start_date, end_date)
  
          def transform_filter(filter):
              level = filter.get('level', None)
              category = filter.get('category', None)
              name = filter.get('name', None)
              if level is None:
                  raise AttributeError("level is mandatory parameter.")
              resp = "(logs.level <= %d" % (int(level), )
              if category is not None:
                  resp += " AND logs.category == '%s'" % (category, )
              if name is not None:
                  resp += " AND logs.log_name == '%s'" % (name, )
              resp += ')'
              return resp
  
          filter_strings = map(transform_filter, filters)
          if filter_strings:
              query += " AND (%s)\n" % (' OR '.join(filter_strings), )
          query += " ORDER BY logs.timestamp, rowid"
          if limit:
              query += " LIMIT %s" % (limit, )
  
          d = self._db.runQuery(query)
          d.addCallback(self._decode, entry_type='log')
          return d