diff --git a/core/base-service/base.js b/core/base-service/base.js
index 428a87e63bbb596228e6a0578afa96683041988e..72d80ad57c8ffa7ced7a017c1c699977658e1a2f 100644
--- a/core/base-service/base.js
+++ b/core/base-service/base.js
@@ -222,7 +222,13 @@ class BaseService {
     let logUrl = url
     const logOptions = Object.assign({}, options)
     if ('searchParams' in options) {
-      const params = new URLSearchParams(options.searchParams)
+      const params = new URLSearchParams(
+        Object.fromEntries(
+          Object.entries(options.searchParams).filter(
+            ([k, v]) => v !== undefined
+          )
+        )
+      )
       logUrl = `${url}?${params.toString()}`
       delete logOptions.searchParams
     }
diff --git a/core/base-service/base.spec.js b/core/base-service/base.spec.js
index 8698a15f43b99fce7030163a3cae95c3670be042..0eb3fcd16295350076702ba07c3466ed9f8f52ca 100644
--- a/core/base-service/base.spec.js
+++ b/core/base-service/base.spec.js
@@ -440,14 +440,21 @@ describe('BaseService', function () {
       )
 
       const url = 'some-url'
-      const options = { headers: { Cookie: 'some-cookie' } }
+      const options = {
+        headers: { Cookie: 'some-cookie' },
+        searchParams: { param1: 'foobar', param2: undefined },
+      }
       await serviceInstance._request({ url, options })
 
       expect(trace.logTrace).to.be.calledWithMatch(
         'fetch',
         sinon.match.string,
         'Request',
-        `${url}\n${JSON.stringify(options, null, 2)}`
+        `${url}?param1=foobar\n${JSON.stringify(
+          { headers: options.headers },
+          null,
+          2
+        )}`
       )
       expect(trace.logTrace).to.be.calledWithMatch(
         'fetch',