diff --git a/garnet/bin/trace_manager/trace_manager.cc b/garnet/bin/trace_manager/trace_manager.cc
index 240203c20fc00a302a8339a957e330df54ab3a44..e87655260a0afd26491d1d467b226ac132689925 100644
--- a/garnet/bin/trace_manager/trace_manager.cc
+++ b/garnet/bin/trace_manager/trace_manager.cc
@@ -5,6 +5,7 @@
 #include "garnet/bin/trace_manager/trace_manager.h"
 
 #include <lib/zx/time.h>
+#include <src/lib/fxl/log_settings_command_line.h>
 
 #include <algorithm>
 #include <iostream>
@@ -199,19 +200,26 @@ void TraceManager::LaunchConfiguredProviders() {
     // TODO(jeffbrown): Only do this if the provider isn't already running.
     // Also keep track of the provider so we can kill it when the trace
     // manager exits or restart it if needed.
+    fuchsia::sys::LaunchInfo launch_info;
+    launch_info.url = pair.second->url;
+    fidl::Clone(pair.second->arguments, &launch_info.arguments);
+
+    // Transfer our log settings to the provider.
+    for (auto arg : fxl::LogSettingsToArgv(fxl::GetLogSettings())) {
+      launch_info.arguments.push_back(arg);
+    }
+
     FXL_VLOG(1) << "Starting configured provider: " << pair.first;
     FXL_VLOG(2) << "URL: " << pair.second->url;
     if (FXL_VLOG_IS_ON(2)) {
       std::string args;
-      for (const auto& arg : *pair.second->arguments) {
+      for (const auto& arg : *launch_info.arguments) {
         args += " ";
         args += arg;
       }
       FXL_VLOG(2) << "Args:" << args;
     }
-    fuchsia::sys::LaunchInfo launch_info;
-    launch_info.url = pair.second->url;
-    fidl::Clone(pair.second->arguments, &launch_info.arguments);
+
     launcher->CreateComponent(std::move(launch_info), nullptr);
   }
 }
diff --git a/garnet/lib/perfmon/config.cc b/garnet/lib/perfmon/config.cc
index 7cf9b84942a911f62643091f73db5876ebf40753..91196d864ba502d3b5a6398195e1737924db12ad 100644
--- a/garnet/lib/perfmon/config.cc
+++ b/garnet/lib/perfmon/config.cc
@@ -74,22 +74,29 @@ std::string Config::ToString() {
 
 static void ToIoctlEvent(const Config::EventConfig& event, size_t index,
                          perfmon_ioctl_config_t* out_config) {
-  out_config->events[index].event = event.event;
-  out_config->events[index].rate = event.rate;
+  perfmon_ioctl_event_config_t& out_event = out_config->events[index];
+  out_event.event = event.event;
+  out_event.rate = event.rate;
   if (event.flags & Config::kFlagOs) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_OS;
+    out_event.flags |= PERFMON_CONFIG_FLAG_OS;
   }
   if (event.flags & Config::kFlagUser) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_USER;
+    out_event.flags |= PERFMON_CONFIG_FLAG_USER;
   }
   if (event.flags & Config::kFlagPc) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_PC;
+    out_event.flags |= PERFMON_CONFIG_FLAG_PC;
   }
   if (event.flags & Config::kFlagTimebase) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_TIMEBASE;
+    out_event.flags |= PERFMON_CONFIG_FLAG_TIMEBASE;
   }
   if (event.flags & Config::kFlagLastBranch) {
-    out_config->events[index].flags |= PERFMON_CONFIG_FLAG_LAST_BRANCH;
+    out_event.flags |= PERFMON_CONFIG_FLAG_LAST_BRANCH;
+  }
+
+  if (FXL_VLOG_IS_ON(3)) {
+    FXL_VLOG(3) << fxl::StringPrintf(
+        "Converted event: 0x%x, rate %u, flags 0x%x", out_event.event,
+        out_event.rate, out_event.flags);
   }
 }