diff --git a/runtime/factories/roaming/roaming.go b/runtime/factories/roaming/roaming.go
index 9dd781e..f42d786 100644
--- a/runtime/factories/roaming/roaming.go
+++ b/runtime/factories/roaming/roaming.go
@@ -62,7 +62,7 @@
 		Addrs: rpc.ListenAddrs(lf.Addrs),
 		Proxy: lf.ListenProxy,
 	}
-	reservedDispatcher := debuglib.NewDispatcher(logger.Manager(logger.Global()).LogDir, securityflag.NewAuthorizerOrDie())
+	reservedDispatcher := debuglib.NewDispatcher(securityflag.NewAuthorizerOrDie())
 
 	ac := appcycle.New()
 
diff --git a/runtime/factories/static/static.go b/runtime/factories/static/static.go
index c92732b..76ab113 100644
--- a/runtime/factories/static/static.go
+++ b/runtime/factories/static/static.go
@@ -44,7 +44,7 @@
 		Addrs: rpc.ListenAddrs(lf.Addrs),
 		Proxy: lf.ListenProxy,
 	}
-	reservedDispatcher := debuglib.NewDispatcher(logger.Manager(logger.Global()).LogDir, securityflag.NewAuthorizerOrDie())
+	reservedDispatcher := debuglib.NewDispatcher(securityflag.NewAuthorizerOrDie())
 
 	ac := appcycle.New()
 
diff --git a/runtime/internal/rpc/debug_test.go b/runtime/internal/rpc/debug_test.go
index 98dac91..26aabf6 100644
--- a/runtime/internal/rpc/debug_test.go
+++ b/runtime/internal/rpc/debug_test.go
@@ -16,7 +16,6 @@
 	"v.io/v23/options"
 	"v.io/v23/rpc"
 
-	"v.io/x/ref/internal/logger"
 	"v.io/x/ref/lib/stats"
 	"v.io/x/ref/runtime/internal/rpc/stream/manager"
 	tnaming "v.io/x/ref/runtime/internal/testing/mocks/naming"
@@ -39,7 +38,7 @@
 	pclient.AddToRoots(bclient)                    // Client recognizes "server" as a root of blessings.
 	pclient.BlessingStore().Set(bclient, "server") // Client presents bclient to server
 
-	debugDisp := debuglib.NewDispatcher(logger.Manager(ctx).LogDir, nil)
+	debugDisp := debuglib.NewDispatcher(nil)
 
 	sm := manager.InternalNew(ctx, naming.FixedRoutingID(0x555555555))
 	defer sm.Shutdown()
diff --git a/runtime/internal/rt/runtime_test.go b/runtime/internal/rt/runtime_test.go
index 27ae0d9..44cb603 100644
--- a/runtime/internal/rt/runtime_test.go
+++ b/runtime/internal/rt/runtime_test.go
@@ -12,7 +12,6 @@
 	"v.io/v23/naming"
 	"v.io/v23/options"
 
-	"v.io/x/ref/internal/logger"
 	"v.io/x/ref/lib/flags"
 	"v.io/x/ref/runtime/internal/rt"
 	"v.io/x/ref/services/debug/debuglib"
@@ -143,7 +142,7 @@
 	defer shutdown()
 
 	oldDebugDisp := r.GetReservedNameDispatcher(ctx)
-	newDebugDisp := debuglib.NewDispatcher(logger.Manager(ctx).LogDir, nil)
+	newDebugDisp := debuglib.NewDispatcher(nil)
 
 	nctx := r.WithReservedNameDispatcher(ctx, newDebugDisp)
 	debugDisp := r.GetReservedNameDispatcher(nctx)
diff --git a/services/debug/debuglib/dispatcher.go b/services/debug/debuglib/dispatcher.go
index 81c09b5..7c3557a 100644
--- a/services/debug/debuglib/dispatcher.go
+++ b/services/debug/debuglib/dispatcher.go
@@ -12,6 +12,7 @@
 	"v.io/v23/context"
 	"v.io/v23/rpc"
 	"v.io/v23/security"
+	"v.io/x/ref/internal/logger"
 	"v.io/x/ref/services/internal/logreaderlib"
 	"v.io/x/ref/services/internal/pproflib"
 	"v.io/x/ref/services/internal/statslib"
@@ -20,20 +21,19 @@
 
 // dispatcher holds the state of the debug dispatcher.
 type dispatcher struct {
-	logsDirFunc func() string // The function returns the root of the logs directory.
-	auth        security.Authorizer
+	auth security.Authorizer
 }
 
 var _ rpc.Dispatcher = (*dispatcher)(nil)
 
-func NewDispatcher(logsDirFunc func() string, authorizer security.Authorizer) rpc.Dispatcher {
-	return &dispatcher{logsDirFunc, authorizer}
+func NewDispatcher(authorizer security.Authorizer) rpc.Dispatcher {
+	return &dispatcher{authorizer}
 }
 
 // The first part of the names of the objects served by this dispatcher.
 var rootName = "__debug"
 
-func (d *dispatcher) Lookup(_ *context.T, suffix string) (interface{}, security.Authorizer, error) {
+func (d *dispatcher) Lookup(ctx *context.T, suffix string) (interface{}, security.Authorizer, error) {
 	if suffix == "" {
 		return rpc.ChildrenGlobberInvoker(rootName), d.auth, nil
 	}
@@ -54,7 +54,7 @@
 	}
 	switch parts[0] {
 	case "logs":
-		return logreaderlib.NewLogFileService(d.logsDirFunc(), suffix), d.auth, nil
+		return logreaderlib.NewLogFileService(logger.Manager(ctx).LogDir(), suffix), d.auth, nil
 	case "pprof":
 		return pproflib.NewPProfService(), d.auth, nil
 	case "stats":
diff --git a/services/debug/debuglib/dispatcher_test.go b/services/debug/debuglib/dispatcher_test.go
index 441f20a..1dcd3b6 100644
--- a/services/debug/debuglib/dispatcher_test.go
+++ b/services/debug/debuglib/dispatcher_test.go
@@ -24,7 +24,7 @@
 	"v.io/v23/vdl"
 	"v.io/v23/verror"
 	"v.io/v23/vtrace"
-
+	"v.io/x/lib/vlog"
 	libstats "v.io/x/ref/lib/stats"
 	"v.io/x/ref/lib/xrpc"
 	_ "v.io/x/ref/runtime/factories/generic"
@@ -54,7 +54,12 @@
 		t.Fatalf("ioutil.WriteFile failed: %v", err)
 	}
 
-	disp := NewDispatcher(func() string { return workdir }, nil)
+	// Use logger configured with the directory that we want to use for this test.
+	testLogger := vlog.NewLogger("TestDebugServer")
+	testLogger.Configure(vlog.LogDir(workdir))
+	ctx = context.WithLogger(ctx, testLogger)
+
+	disp := NewDispatcher(nil)
 	server, err := xrpc.NewDispatchingServer(ctx, "", disp)
 	if err != nil {
 		t.Fatalf("failed to start debug server: %v", err)
diff --git a/services/device/deviced/internal/impl/dispatcher.go b/services/device/deviced/internal/impl/dispatcher.go
index ddf37f5..975b641 100644
--- a/services/device/deviced/internal/impl/dispatcher.go
+++ b/services/device/deviced/internal/impl/dispatcher.go
@@ -60,9 +60,6 @@
 	permsStore *pathperms.PathStore
 	// Namespace
 	mtAddress string // The address of the local mounttable.
-	// TODO(cnicolaou): remove this when Lookup takes a context.T parameter directly,
-	// see v.io/i/572.
-	ctx *context.T
 }
 
 var _ rpc.Dispatcher = (*dispatcher)(nil)
@@ -131,7 +128,6 @@
 		uat:        uat,
 		permsStore: permStore,
 		mtAddress:  mtAddress,
-		ctx:        ctx,
 	}
 
 	// If we're in 'security agent mode', set up the key manager agent.
@@ -166,25 +162,24 @@
 // Logging invoker that logs any error messages before returning.
 func newLoggingInvoker(ctx *context.T, obj interface{}) (rpc.Invoker, error) {
 	if invoker, ok := obj.(rpc.Invoker); ok {
-		return &loggingInvoker{invoker: invoker, ctx: ctx}, nil
+		return &loggingInvoker{invoker: invoker}, nil
 	}
 	invoker, err := rpc.ReflectInvoker(obj)
 	if err != nil {
 		ctx.Errorf("rpc.ReflectInvoker returned error: %v", err)
 		return nil, err
 	}
-	return &loggingInvoker{invoker: invoker, ctx: ctx}, nil
+	return &loggingInvoker{invoker: invoker}, nil
 }
 
 type loggingInvoker struct {
 	invoker rpc.Invoker
-	ctx     *context.T
 }
 
 func (l *loggingInvoker) Prepare(ctx *context.T, method string, numArgs int) (argptrs []interface{}, tags []*vdl.Value, err error) {
 	argptrs, tags, err = l.invoker.Prepare(ctx, method, numArgs)
 	if err != nil {
-		l.ctx.Errorf("Prepare(%s %d) returned error: %v", method, numArgs, err)
+		ctx.Errorf("Prepare(%s %d) returned error: %v", method, numArgs, err)
 	}
 	return
 }
@@ -218,12 +213,12 @@
 }
 
 // DISPATCHER INTERFACE IMPLEMENTATION
-func (d *dispatcher) Lookup(_ *context.T, suffix string) (interface{}, security.Authorizer, error) {
+func (d *dispatcher) Lookup(ctx *context.T, suffix string) (interface{}, security.Authorizer, error) {
 	invoker, auth, err := d.internalLookup(suffix)
 	if err != nil {
 		return nil, nil, err
 	}
-	loggingInvoker, err := newLoggingInvoker(d.ctx, invoker)
+	loggingInvoker, err := newLoggingInvoker(ctx, invoker)
 	if err != nil {
 		return nil, nil, err
 	}
diff --git a/services/device/deviced/internal/impl/proxy_invoker_test.go b/services/device/deviced/internal/impl/proxy_invoker_test.go
index c39c410..4b9a16c 100644
--- a/services/device/deviced/internal/impl/proxy_invoker_test.go
+++ b/services/device/deviced/internal/impl/proxy_invoker_test.go
@@ -33,7 +33,6 @@
 
 	// server2 proxies requests to <suffix> to server1/__debug/stats/<suffix>
 	disp := &proxyDispatcher{
-		ctx:    ctx,
 		remote: naming.JoinAddressName(server1.Status().Endpoints[0].String(), "__debug/stats"),
 		desc:   stats.StatsServer(nil).Describe__(),
 	}
@@ -69,12 +68,11 @@
 func (*dummy) Method(*context.T, rpc.ServerCall) error { return nil }
 
 type proxyDispatcher struct {
-	ctx    *context.T
 	remote string
 	desc   []rpc.InterfaceDesc
 }
 
-func (d *proxyDispatcher) Lookup(_ *context.T, suffix string) (interface{}, security.Authorizer, error) {
-	d.ctx.Infof("LOOKUP(%s): remote .... %s", suffix, d.remote)
+func (d *proxyDispatcher) Lookup(ctx *context.T, suffix string) (interface{}, security.Authorizer, error) {
+	ctx.Infof("LOOKUP(%s): remote .... %s", suffix, d.remote)
 	return newProxyInvoker(naming.Join(d.remote, suffix), access.Debug, d.desc), nil, nil
 }
diff --git a/services/device/deviced/internal/starter/starter.go b/services/device/deviced/internal/starter/starter.go
index c6c972a..511998d 100644
--- a/services/device/deviced/internal/starter/starter.go
+++ b/services/device/deviced/internal/starter/starter.go
@@ -20,7 +20,6 @@
 	"v.io/v23/rpc"
 	"v.io/v23/security"
 	"v.io/v23/verror"
-	"v.io/x/ref/internal/logger"
 	"v.io/x/ref/lib/xrpc"
 	"v.io/x/ref/runtime/factories/roaming"
 	"v.io/x/ref/services/debug/debuglib"
@@ -223,7 +222,7 @@
 		return nil, err
 	}
 
-	debugDisp := debuglib.NewDispatcher(logger.Manager(ctx).LogDir, debugAuth)
+	debugDisp := debuglib.NewDispatcher(debugAuth)
 
 	ctx = v23.WithReservedNameDispatcher(ctx, debugDisp)
 
diff --git a/services/mounttable/mounttablelib/mounttable.go b/services/mounttable/mounttablelib/mounttable.go
index 303fa8c..7dbb898 100644
--- a/services/mounttable/mounttablelib/mounttable.go
+++ b/services/mounttable/mounttablelib/mounttable.go
@@ -60,7 +60,6 @@
 // mountTable represents a namespace.  One exists per server instance.
 type mountTable struct {
 	sync.Mutex
-	ctx                *context.T
 	root               *node
 	superUsers         access.AccessList
 	persisting         bool
@@ -115,7 +114,6 @@
 // statsPrefix is the prefix for for exported statistics objects.
 func NewMountTableDispatcher(ctx *context.T, permsFile, persistDir, statsPrefix string) (rpc.Dispatcher, error) {
 	mt := &mountTable{
-		ctx:                ctx,
 		root:               new(node),
 		nodeCounter:        stats.NewInteger(naming.Join(statsPrefix, "num-nodes")),
 		serverCounter:      stats.NewInteger(naming.Join(statsPrefix, "num-mounted-servers")),
@@ -178,7 +176,7 @@
 
 // Lookup implements rpc.Dispatcher.Lookup.
 func (mt *mountTable) Lookup(ctx *context.T, name string) (interface{}, security.Authorizer, error) {
-	mt.ctx.VI(2).Infof("*********************Lookup %s", name)
+	ctx.VI(2).Infof("*********************Lookup %s", name)
 	ms := &mountContext{
 		name: name,
 		mt:   mt,
diff --git a/services/mounttable/mounttablelib/mounttable_test.go b/services/mounttable/mounttablelib/mounttable_test.go
index 9afb038..e54e977 100644
--- a/services/mounttable/mounttablelib/mounttable_test.go
+++ b/services/mounttable/mounttablelib/mounttable_test.go
@@ -26,7 +26,6 @@
 	"v.io/v23/services/stats"
 	"v.io/v23/vdl"
 
-	"v.io/x/ref/internal/logger"
 	libstats "v.io/x/ref/lib/stats"
 	"v.io/x/ref/lib/xrpc"
 	"v.io/x/ref/services/debug/debuglib"
@@ -187,7 +186,7 @@
 }
 
 func newMT(t *testing.T, permsFile, persistDir, statsDir string, rootCtx *context.T) (func() error, string) {
-	reservedDisp := debuglib.NewDispatcher(logger.Manager(logger.Global()).LogDir, nil)
+	reservedDisp := debuglib.NewDispatcher(nil)
 	ctx := v23.WithReservedNameDispatcher(rootCtx, reservedDisp)
 
 	// Add mount table service.
diff --git a/services/wspr/internal/rpc/server/dispatcher.go b/services/wspr/internal/rpc/server/dispatcher.go
index afdd2fa..03a974d 100644
--- a/services/wspr/internal/rpc/server/dispatcher.go
+++ b/services/wspr/internal/rpc/server/dispatcher.go
@@ -71,12 +71,12 @@
 }
 
 // Lookup implements dispatcher interface Lookup.
-func (d *dispatcher) Lookup(_ *context.T, suffix string) (interface{}, security.Authorizer, error) {
+func (d *dispatcher) Lookup(ctx *context.T, suffix string) (interface{}, security.Authorizer, error) {
 	// If the server has been closed, we immediately return a retryable error.
 	d.mu.Lock()
 	if d.closed {
 		d.mu.Unlock()
-		return nil, nil, NewErrServerStopped(nil)
+		return nil, nil, NewErrServerStopped(ctx)
 	}
 	flow := d.flowFactory.createFlow()
 	ch := make(chan LookupReply, 1)
@@ -88,7 +88,7 @@
 		Suffix:   suffix,
 	}
 	if err := flow.Writer.Send(lib.ResponseDispatcherLookup, message); err != nil {
-		verr := verror.Convert(verror.ErrInternal, nil, err).(verror.E)
+		verr := verror.Convert(verror.ErrInternal, ctx, err).(verror.E)
 		ch <- LookupReply{Err: &verr}
 	}
 	reply := <-ch
@@ -103,7 +103,7 @@
 		return nil, nil, reply.Err
 	}
 	if reply.Handle < 0 {
-		return nil, nil, verror.New(verror.ErrNoExist, nil, "Dispatcher", suffix)
+		return nil, nil, verror.New(verror.ErrNoExist, ctx, "Dispatcher", suffix)
 	}
 
 	invoker, err := d.invokerFactory.createInvoker(reply.Handle, reply.Signature, reply.HasGlobber)
