<p>EDIT: I am rewriting this question to narrow the scope as suggested in comments.</p>

<p>Under <a href="https://istio.io/docs/examples/bookinfo/#deploying-the-application" rel="nofollow noreferrer">Deploying the application</a>, the documentation says,</p>

<blockquote>
  <p>To run the sample with Istio <strong>requires no changes to the application itself</strong>. Instead, you simply need to configure and run the services in an Istio-enabled environment, with Envoy sidecars injected along side each service.</p>
</blockquote>

<p>I have a NodeJS back-end API, that writes logs with <a href="https://www.npmjs.com/package/winston" rel="nofollow noreferrer">winston</a> package. I would presume that, the application <strong>will</strong> have to be changed so that the logs from the winston package can participate in distributed tracing. Is this correct?</p>

cogitoergosum
<p>Distributed tracing systems in general require adding headers to outbound requests to tell the tracing system and downstream tasks which trace a given request belongs to.  While this isn't Istio-specific, Istio does document <a href="https://istio.io/docs/tasks/telemetry/distributed-tracing/overview/#trace-context-propagation" rel="nofollow noreferrer">a list of OpenTracing headers</a> that need to be passed along.  If you don't do this, then each call between services will show up as a separate trace instead of them being stitched together into a single unified end-to-end trace.</p>

<p>This is separate from your logging system.  Unless you're sending logs via HTTP to something like Logstash or directly into Elasticsearch, logs won't show up in traces at all.  The flip side of this is that you don't need to change anything in your logging setup to "work with" Istio, but mostly because there's not a lot of direct interaction.</p>
