### 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)

"TEST_EVENT_1",
                    "TEST_EVENT_2",
                    "TEST_EVENT_3",
                    "TEST_EVENT_4",
                    "TEST_EVENT_5",
                    "TEST_EVENT_6",
                    "TEST_EVENT_7",
                    "TEST_EVENT_8",
                    "TEST_EVENT_9",
                    "TEST_EVENT_10",
                ],
            ),
            ("api/v1/eventLogs?limit=1&offset=5", ["TEST_EVENT_6"]),
            ("api/v1/eventLogs?limit=1&offset=1", ["TEST_EVENT_2"]),
            (
                "api/v1/eventLogs?limit=2&offset=2",
                ["TEST_EVENT_3", "TEST_EVENT_4"],
            ),
        ],
    )
    def test_handle_limit_and_offset(self, url, expected_events, task_instance, session):
        log_models = self._create_event_logs(task_instance, 10)
        session.add_all(log_models)
        session.commit()
        response = self.client.get(url, environ_overrides={"REMOTE_USER": "test"})
        assert response.status_code == 200
        assert response.json["total_entries"] == 10
        events = [event_log["event"] for event_log in response.json["event_logs"]]
        assert events == expected_events
    def test_should_respect_page_size_limit_default(self, task_instance, session):