diff --git a/CHANGELOG.md b/CHANGELOG.md
index 8ddee6f..48eeb0c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,6 +22,12 @@ This prevents crashes if something different than a string is passed for the *ev
   [#475](https://github.com/hynek/structlog/pull/475)
 
 
+### Fixed
+
+- String interpolation doesn't cause crashes in filtered log call anymore.
+  [#478](https://github.com/hynek/structlog/pull/478)
+
+
 ## [22.2.0](https://github.com/hynek/structlog/compare/22.1.0...22.2.0) - 2022-11-19
 
 ### Deprecated
diff --git a/src/structlog/_log_levels.py b/src/structlog/_log_levels.py
index 4d49780..6e9fb1a 100644
--- a/src/structlog/_log_levels.py
+++ b/src/structlog/_log_levels.py
@@ -71,11 +71,11 @@ def add_log_level(
     return event_dict
 
 
-def _nop(self: Any, event: str, **kw: Any) -> Any:
+def _nop(self: Any, event: str, *args: Any, **kw: Any) -> Any:
     return None
 
 
-async def _anop(self: Any, event: str, **kw: Any) -> Any:
+async def _anop(self: Any, event: str, *args: Any, **kw: Any) -> Any:
     return None
 
 

diff --git a/tests/test_log_levels.py b/tests/test_log_levels.py
index fff9cce..2a0e579 100644
--- a/tests/test_log_levels.py
+++ b/tests/test_log_levels.py
@@ -61,6 +61,22 @@ class TestFilteringLogger:
 
         assert [] == cl.calls
 
+    def test_filtered_interp(self, bl, cl):
+        """
+        Passing interpolation args works if the log entry is filtered out.
+        """
+        bl.debug("hello %s!", "world")
+
+        assert [] == cl.calls
+
+    async def test_async_filtered_interp(self, bl, cl):
+        """
+        Passing interpolation args works if the log entry is filtered out.
+        """
+        await bl.adebug("hello %s!", "world")
+
+        assert [] == cl.calls
+
     def test_no_args(self, bl, cl):
         """
         If no args are passed, don't attempt intepolation.

Interpolation raises an error for filtered out logs
Interpolation appears to be broken when the log is filtered out. Observed with structulog 22.2.0.

```python
import logging

import structlog

structlog.configure(
    processors=[
        structlog.contextvars.merge_contextvars,
        structlog.processors.add_log_level,
        structlog.processors.StackInfoRenderer(),
        structlog.dev.set_exc_info,
        structlog.processors.TimeStamper(),
        structlog.dev.ConsoleRenderer()
    ],
    # Note this is set at the INFO level
    wrapper_class=structlog.make_filtering_bound_logger(logging.INFO),
    context_class=dict,
    logger_factory=structlog.PrintLoggerFactory(),
    cache_logger_on_first_use=False
)
log = structlog.get_logger()

# Note this is at the DEBUG level, there's no problem at the INFO level or higher
log.debug('hello %s', 'world')
```

Traceback:
```
Traceback (most recent call last):
  File "/home/liquetm/dev/python-panels/bug.py", line 21, in <module>
    log.debug('hello %s', 'world')
TypeError: _nop() takes 2 positional arguments but 3 were given
```
tests/test_log_levels.py::TestFilteringLogger::test_filtered_interp tests/test_log_levels.py::TestFilteringLogger::test_async_filtered_interp
tests/test_log_levels.py::TestFilteringLogger::test_exact_level tests/test_log_levels.py::TestFilteringLogger::test_async_exact_level tests/test_log_levels.py::TestFilteringLogger::test_one_below tests/test_log_levels.py::TestFilteringLogger::test_async_one_below tests/test_log_levels.py::TestFilteringLogger::test_no_args tests/test_log_levels.py::TestFilteringLogger::test_async_no_args tests/test_log_levels.py::TestFilteringLogger::test_log_exact_level tests/test_log_levels.py::TestFilteringLogger::test_alog_exact_level tests/test_log_levels.py::TestFilteringLogger::test_log_one_below tests/test_log_levels.py::TestFilteringLogger::test_alog_one_below tests/test_log_levels.py::TestFilteringLogger::test_alog_no_args tests/test_log_levels.py::TestFilteringLogger::test_log_interp tests/test_log_levels.py::TestFilteringLogger::test_alog_interp tests/test_log_levels.py::TestFilteringLogger::test_filter_bound_below_missing_event_string tests/test_log_levels.py::TestFilteringLogger::test_filter_bound_exact_missing_event_string tests/test_log_levels.py::TestFilteringLogger::test_exception tests/test_log_levels.py::TestFilteringLogger::test_async_exception tests/test_log_levels.py::TestFilteringLogger::test_exception_passed tests/test_log_levels.py::TestFilteringLogger::test_async_exception_passed tests/test_log_levels.py::TestFilteringLogger::test_exception_pass_exception tests/test_log_levels.py::TestFilteringLogger::test_pickle[50] tests/test_log_levels.py::TestFilteringLogger::test_pickle[40] tests/test_log_levels.py::TestFilteringLogger::test_pickle[30] tests/test_log_levels.py::TestFilteringLogger::test_pickle[20] tests/test_log_levels.py::TestFilteringLogger::test_pickle[10] tests/test_log_levels.py::TestFilteringLogger::test_pos_args tests/test_log_levels.py::TestFilteringLogger::test_async_pos_args tests/test_log_levels.py::TestFilteringLogger::test_async_contextvars_merged[aexception-args0] tests/test_log_levels.py::TestFilteringLogger::test_async_contextvars_merged[ainfo-args1] tests/test_log_levels.py::TestFilteringLogger::test_async_contextvars_merged[alog-args2]