10 September 2025
Metadata Frameworks in Microsoft Fabric: Logging with Eventhouse (Part 2)
Following up on the previous post about YAML-based metadata frameworks, let’s talk about logging – the part of the framework that often stays invisible until something fails. In Part 1, YAML helped us replace config tables with cleaner, version-controlled definitions. Now, logging ensures we have the visibility to understand what’s really happening inside our Fabric pipelines.
Because without proper logs, troubleshooting a failed run is a bit like fixing a car in the dark – you know something broke, but you’ll have no clue where the problem is.
When we switched to YAML for configurations, we moved away from storing pipeline metadata in the warehouse or SQL config tables. For logging, we deliberately chose Eventhouse and its KQL database.
Why? Because KQL is purpose-built for this kind of workload:
This is exactly how Azure Monitor and Log Analytics work under the hood, so using KQL in Fabric for logging isn’t reinventing the wheel; it’s adopting a proven pattern within the Fabric ecosystem.
That said, the Eventhouse approach is not without limits. On lower Fabric SKUs, we’ve seen throttling under moderate to high concurrency. Retry mechanisms (like exponential backoff) can help, but they’re still workarounds rather than a complete fix.
While logs could technically be stored in a Warehouse or Lakehouse, in practice:
Even if the logging volume is “not that high,” KQL’s concurrency handling and simple write API make it the most practical choice.
We capture logs at two different levels: ingestion pipeline execution details and overall orchestration.
After each ingestion pipeline finishes, a generic pipeline step calls a KQL activity that logs:
A single orchestration notebook reads/parses the YAML, builds the DAG, and executes tasks.
Instead of adding logging code inside every task notebook, we use a notebook wrapper.
The wrapper writes each log entry to Eventhouse using the Kusto Spark Connector:
This gives us granular ingestion logs from pipelines and consistent, centralised task logs from the orchestration layer — all in Eventhouse for analysis and troubleshooting.
Logging isn’t just a side feature; it’s the backbone of reliable pipelines. By choosing Eventhouse, we align with Fabric’s strengths — specifically, KQL for ingestion, analysis, and time-series queries — while maintaining consistency in both pipeline and notebook logging.
Other engines can also be considered depending on needs:
For most scenarios, Eventhouse remains the natural fit: scalable ingestion, real-time visibility, and built-in time-series analysis — exactly what operational logging needs.
In the next part of this series, we’ll look at how DevOps pipelines were set up for YAML deployment in Fabric, covering version control, environment promotion, and approval workflows.