X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=lib%2Fxdsconfig%2Fconfig.go;h=53d16390ce4708126e5fbff6f7ee90876ac22b99;hb=5756bd350d585660cce53a28dc66bfcf162ecca1;hp=a3e5a7ed791bfadf0d6d9fffdc51ec760d7449f1;hpb=dd6f08b10b1597f44e3dc25509ac9a45336b0914;p=src%2Fxds%2Fxds-server.git diff --git a/lib/xdsconfig/config.go b/lib/xdsconfig/config.go index a3e5a7e..53d1639 100644 --- a/lib/xdsconfig/config.go +++ b/lib/xdsconfig/config.go @@ -2,7 +2,9 @@ package xdsconfig import ( "fmt" + "io" "os" + "path/filepath" "github.com/Sirupsen/logrus" "github.com/codegangsta/cli" @@ -17,9 +19,10 @@ type Config struct { Builder BuilderConfig `json:"builder"` // Private (un-exported fields in REST GET /config route) - Options Options `json:"-"` - FileConf FileConfig `json:"-"` - Log *logrus.Logger `json:"-"` + Options Options `json:"-"` + FileConf FileConfig `json:"-"` + Log *logrus.Logger `json:"-"` + LogVerboseOut io.Writer `json:"-"` } // Options set at the command line @@ -60,6 +63,7 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { ShareRootDir: DefaultShareDir, SdkRootDir: DefaultSdkRootDir, HTTPPort: DefaultPort, + LogsDir: "", }, Log: log, } @@ -78,11 +82,35 @@ func Init(cliCtx *cli.Context, log *logrus.Logger) (*Config, error) { } c.Log.Infoln("Share root directory: ", c.FileConf.ShareRootDir) + // Where Logs are redirected: + // default 'stdout' (logfile option default value) + // else use file (or filepath) set by --logfile option + // that may be overwritten by LogsDir field of config file + logF := c.Options.LogFile + logD := c.FileConf.LogsDir + if logF != "stdout" { + if logD != "" { + lf := filepath.Base(logF) + if lf == "" || lf == "." { + lf = "xds-server.log" + } + logF = filepath.Join(logD, lf) + } else { + logD = filepath.Dir(logF) + } + } + if logD == "" || logD == "." { + logD = "/tmp/xds/logs" + } + c.Options.LogFile = logF + c.FileConf.LogsDir = logD + if c.FileConf.LogsDir != "" && !common.Exists(c.FileConf.LogsDir) { if err := os.MkdirAll(c.FileConf.LogsDir, 0770); err != nil { return nil, fmt.Errorf("Cannot create logs dir: %v", err) } } + c.Log.Infoln("Logs file: ", c.Options.LogFile) c.Log.Infoln("Logs directory: ", c.FileConf.LogsDir) return &c, nil