/*
- * Copyright (C) 2017 "IoT.bzh"
+ * Copyright (C) 2017-2018 "IoT.bzh"
* Author Sebastien Douheret <sebastien@iot.bzh>
*
* Licensed under the Apache License, Version 2.0 (the "License");
"strings"
"text/tabwriter"
+ "gerrit.automotivelinux.org/gerrit/src/xds/xds-agent.git/lib/xaapiv1"
+ common "gerrit.automotivelinux.org/gerrit/src/xds/xds-common.git/golib"
"github.com/Sirupsen/logrus"
- "github.com/iotbzh/xds-agent/lib/xaapiv1"
- common "github.com/iotbzh/xds-common/golib"
+
"github.com/joho/godotenv"
socketio_client "github.com/sebd71/go-socket.io-client"
"github.com/urfave/cli"
// Application details
const (
- appCopyright = "Copyright (C) 2017 IoT.bzh - Apache-2.0"
+ appCopyright = "Copyright (C) 2017-2018 IoT.bzh - Apache-2.0"
defaultLogLevel = "error"
)
Usage: "logging level (supported levels: panic, fatal, error, warn, info, debug)",
Value: defaultLogLevel,
},
+ cli.StringFlag{
+ Name: "logfile",
+ Value: "stderr",
+ Usage: "filename where logs will be redirected (default stderr)\n\t",
+ EnvVar: "XDS_LOGFILENAME",
+ },
cli.StringFlag{
Name: "url, u",
EnvVar: "XDS_AGENT_URL",
// Add --config option to all commands to support --config option either before or after command verb
// IOW support following both syntaxes:
- // xds-cli exec --config myprj.conf ...
- // xds-cli --config myprj.conf exec ...
+ // xds-cli exec --config myPrj.conf ...
+ // xds-cli --config myPrj.conf exec ...
for i, cmd := range app.Commands {
if len(cmd.Flags) > 0 {
app.Commands[i].Flags = append(cmd.Flags, cli.StringFlag{Hidden: true, Name: "config, c"})
}
Log.Formatter = &logrus.TextFormatter{}
+ if ctx.String("logfile") != "stderr" {
+ logFile, _ := common.ResolveEnvVar(ctx.String("logfile"))
+ fdL, err := os.OpenFile(logFile, os.O_CREATE|os.O_TRUNC|os.O_WRONLY, 0666)
+ if err != nil {
+ msgErr := fmt.Sprintf("Cannot create log file %s", logFile)
+ return cli.NewExitError(msgErr, 1)
+ }
+ Log.Infof("Logging to file: %s", logFile)
+ Log.Out = fdL
+ }
+
Log.Infof("%s version: %s", AppName, app.Version)
earlyDisplay()
Log.Debugf("\nEnvironment: %v\n", os.Environ())
serverURL = "http://" + serverURL
}
+ lvl := common.HTTPLogLevelWarning
+ if Log.Level == logrus.DebugLevel {
+ lvl = common.HTTPLogLevelDebug
+ }
+
// Create HTTP client
Log.Debugln("Connect HTTP client on ", agentURL)
conf := common.HTTPClientConfig{
CsrfDisable: true,
LogOut: Log.Out,
LogPrefix: "XDSAGENT: ",
- LogLevel: common.HTTPLogLevelDebug,
+ LogLevel: lvl,
}
HTTPCli, err = common.HTTPNewClient(agentURL, conf)
if err := XdsConfigGet(&xdsConf); err != nil {
return cli.NewExitError("ERROR while getting XDS config: "+err.Error(), 1)
}
+ if len(xdsConf.Servers) < 1 {
+ return cli.NewExitError("No XDS Server connected", 1)
+ }
svrCfg := xdsConf.Servers[XdsServerIndexGet()]
if (serverURL != "" && svrCfg.URL != serverURL) || !svrCfg.Connected {
Log.Infof("Update XDS Server config: serverURL=%v, svrCfg=%v", serverURL, svrCfg)