diff --git a/cmd/server/main.go b/cmd/server/main.go index f165a60d..659d2bcf 100644 --- a/cmd/server/main.go +++ b/cmd/server/main.go @@ -1,10 +1,12 @@ package main import ( + "fmt" "log" "net" "os" + "github.com/Sirupsen/logrus" "github.com/kubernetes-incubator/ocid/server" "github.com/kubernetes/kubernetes/pkg/kubelet/api/v1alpha1/runtime" "github.com/urfave/cli" @@ -36,6 +38,42 @@ func main() { Value: "/var/lib/ocid/containers", Usage: "ocid container dir", }, + cli.BoolFlag{ + Name: "debug", + Usage: "enable debug output for logging", + }, + cli.StringFlag{ + Name: "log", + Value: "", + Usage: "set the log file path where internal debug information is written", + }, + cli.StringFlag{ + Name: "log-format", + Value: "text", + Usage: "set the format used by logs ('text' (default), or 'json')", + }, + } + + app.Before = func(c *cli.Context) error { + if c.GlobalBool("debug") { + logrus.SetLevel(logrus.DebugLevel) + } + if path := c.GlobalString("log"); path != "" { + f, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND|os.O_SYNC, 0666) + if err != nil { + return err + } + logrus.SetOutput(f) + } + switch c.GlobalString("log-format") { + case "text": + // retain logrus's default. + case "json": + logrus.SetFormatter(new(logrus.JSONFormatter)) + default: + return fmt.Errorf("unknown log-format %q", c.GlobalString("log-format")) + } + return nil } app.Action = func(c *cli.Context) error {