Custom routes via server.extend() can't emit WideEvents / telemetry (logger not exported)
Maintainers usually reply within 3 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 35/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- express, node.js, typescript
- Domain
- api, backend, observability
Research direction
Start with the server.extend() entry point used from onPluginsReady and review logging/logger.js alongside the package exports map. Compare the existing internal WideEvent usage with the public @databricks/appkit and beta exports. Done means custom routes have a documented or supported way to emit per-request structured telemetry, with the public API boundary and expected behavior clear.
Written by the indexing model from the issue text.
Description
Summary
Custom Express routes added via createApp({ onPluginsReady(appkit){ appkit.server.extend(app => …) } }) can't emit AppKit WideEvents / structured telemetry. Built-in plugin routes (analytics, files, genie) emit per-request WideEvents to the configured OTLP exporter, but custom routes have no supported way to do the same. console.log from a custom route reaches stdout but isn't part of the OTLP WideEvent/log export.
Version
@databricks/appkit 0.38.1 · Node 24 · Databricks Apps · telemetry configured via OTLP.
What I'm doing
Mounting custom HTTP routes (an MCP server over Streamable HTTP, plus a model-serving proxy) via server.extend() in onPluginsReady, and wanting per-request/per-tool observability alongside the plugin routes.
What I tried
Plugin routes use an internal logger:
import { createLogger } from ".../logging/logger.js";
const logger = createLogger("analytics");
logger.event(req)?.setComponent("analytics", "executeQuery").setContext("analytics", {...});
But that API isn't publicly reachable: createLogger / the WideEvent API is not exported from @databricks/appkit or @databricks/appkit/beta, and the package exports map (only ., ./beta, ./dist/shared/src/plugin, ./type-generator, ./package.json) blocks importing @databricks/appkit/dist/logging/logger.js.
Ask (any one)
- Export the WideEvent logger (
createLogger+event/setComponent/setContext) as public API, or - Document a supported way to emit WideEvents / structured telemetry from
server.extend()routes, or - Auto-instrument custom routes registered via
server.extend().
Workaround
console.log (stdout only), or emitting a raw OTLP LogRecord via @opentelemetry/api-logs against the exporter AppKit already configures.
- Dominant language
- TypeScript
- Stars
- 119
- Forks
- 36
- Avg merge
- 4d 16h
- Merged PRs (30d)
- 37
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from databricks/appkit
-
Difficulty 4/5 3-5 days Newbie friendliness 55/100
databricks/appkit#729 ·
Maintainers usually reply within 3 days
-
@databricks/lakebase: pool drops maxLifetimeSeconds and other pg options, so connections never recycle and Unity Catalog claims access fails after 4 hoursPossibly taken @billmcmillin claimed this 5 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 20/100
databricks/appkit#718 ·
Maintainers usually reply within 3 days
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
databricks/appkit#699 ·
Maintainers usually reply within 3 days
-
Difficulty 3/5 Half a day Newbie friendliness 42/100
databricks/appkit#656 · 1 comment ·
Maintainers usually reply within 3 days
-
Difficulty 4/5 3-5 days Newbie friendliness 28/100
databricks/appkit#648 · 2 comments ·
Maintainers usually reply within 3 days
All issues in databricks/appkit
Similar issues
-
Add "append" and "prepend" slots for vue-vuetify extended renderersPossibly taken @simeyc claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
eclipsesource/jsonforms#2668 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
README の通知条件を実際の判定処理に合わせるPossibly taken @unhappychoice claimed this today. Openfactory:in-progress priority:medium
Difficulty 1/5 Under an hour Newbie friendliness 90/100
unhappychoice/oss-issue-opener#395 · 1 comment ·
Maintainers usually reply within 1 day
-
bug Website
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
OWASP/OWASP-Hunting#88 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day