blob: c36d972244af1f287d553cdf80dc6543647980b2 [file] [log] [blame]
// Package debug implements a server that exports debugging information from
// various sources: log files, stats, etc.
package debug
import (
"fmt"
"veyron.io/veyron/veyron2"
"veyron.io/veyron/veyron2/ipc"
"veyron.io/veyron/veyron2/security"
"veyron.io/veyron/veyron2/vlog"
)
// StartDebugServer starts a debug server.
func StartDebugServer(rt veyron2.Runtime, listenSpec *ipc.ListenSpec, logsDir string, auth security.Authorizer) (string, func(), error) {
if len(logsDir) == 0 {
return "", nil, fmt.Errorf("logs directory missing")
}
disp := NewDispatcher(logsDir, auth)
server, err := rt.NewServer()
if err != nil {
return "", nil, fmt.Errorf("failed to start debug server: %v", err)
}
endpoint, err := server.ListenX(listenSpec)
if err != nil {
return "", nil, fmt.Errorf("failed to listen on %s: %v", listenSpec, err)
}
if err := server.Serve("", disp); err != nil {
return "", nil, err
}
ep := endpoint.String()
vlog.VI(1).Infof("Debug server listening on %v", ep)
return ep, func() { server.Stop() }, nil
}