### Description

In the REST API, there is an endpoint to get event (audit) logs. It has sorting and pagination but not filtering. It would be useful to filter by `when` (before and after), `dag_id`, `task_id`,  `owner`, `event`


<img width="891" alt="Screenshot 2023-09-08 at 1 30 35 PM" src="https://github.com/apache/airflow/assets/4600967/4280b9ed-2c73-4a9c-962c-4ede5cb140fe">


### Use case/motivation

_No response_

### Related issues

_No response_

### Are you willing to submit a PR?

- [ ] Yes I am willing to submit a PR!

### Code of Conduct

- [X] I agree to follow this project's [Code of Conduct](https://github.com/apache/airflow/blob/main/CODE_OF_CONDUCT.md)

log_models = self._create_event_logs(task_instance, 200)
        session.add_all(log_models)
        session.flush()
        response = self.client.get("/api/v1/eventLogs", environ_overrides={"REMOTE_USER": "test"})
        assert response.status_code == 200
        assert response.json["total_entries"] == 200
        assert len(response.json["event_logs"]) == 100  
    def test_should_raise_400_for_invalid_order_by_name(self, task_instance, session):
        log_models = self._create_event_logs(task_instance, 200)
        session.add_all(log_models)
        session.flush()
        response = self.client.get(
            "/api/v1/eventLogs?order_by=invalid", environ_overrides={"REMOTE_USER": "test"}
        )
        assert response.status_code == 400
        msg = "Ordering with 'invalid' is disallowed or the attribute does not exist on the model"
        assert response.json["detail"] == msg
    @conf_vars({("api", "maximum_page_limit"): "150"})
    def test_should_return_conf_max_if_req_max_above_conf(self, task_instance, session):
        log_models = self._create_event_logs(task_instance, 200)
        session.add_all(log_models)
        session.flush()
        response = self.client.get("/api/v1/eventLogs?limit=180", environ_overrides={"REMOTE_USER": "test"})
        assert response.status_code == 200
        assert len(response.json["event_logs"]) == 150
    def _create_event_logs(self, task_instance, count):
        return [Log(event=f"TEST_EVENT_{i}", task_instance=task_instance) for i in range(1, count + 1)]