Improved silly logging.
[src/xds/xds-agent.git] / lib / agent / agent.go
index 29b0622..58a2ba0 100644 (file)
@@ -1,3 +1,20 @@
+/*
+ * Copyright (C) 2017 "IoT.bzh"
+ * Author Sebastien Douheret <sebastien@iot.bzh>
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package agent
 
 import (
@@ -11,27 +28,29 @@ import (
        "time"
 
        "github.com/Sirupsen/logrus"
-       "github.com/codegangsta/cli"
        "github.com/iotbzh/xds-agent/lib/syncthing"
        "github.com/iotbzh/xds-agent/lib/xdsconfig"
+       "github.com/urfave/cli"
 )
 
 const cookieMaxAge = "3600"
 
 // Context holds the Agent context structure
 type Context struct {
-       ProgName    string
-       Config      *xdsconfig.Config
-       Log         *logrus.Logger
-       SThg        *st.SyncThing
-       SThgCmd     *exec.Cmd
-       SThgInotCmd *exec.Cmd
-
-       webServer     *WebServer
+       ProgName      string
+       Config        *xdsconfig.Config
+       Log           *logrus.Logger
+       LogLevelSilly bool
+       LogSillyf     func(format string, args ...interface{})
+       SThg          *st.SyncThing
+       SThgCmd       *exec.Cmd
+       SThgInotCmd   *exec.Cmd
+
+       webServer  *WebServer
        xdsServers map[string]*XdsServer
-       sessions      *Sessions
-       events        *Events
-       projects      *Projects
+       sessions   *Sessions
+       events     *Events
+       projects   *Projects
 
        Exit chan os.Signal
 }
@@ -53,15 +72,26 @@ func NewAgent(cliCtx *cli.Context) *Context {
        }
        log.Formatter = &logrus.TextFormatter{}
 
+       // Support silly logging (printed on log.debug)
+       sillyVal, sillyLog := os.LookupEnv("XDS_LOG_SILLY")
+       logSilly := sillyLog && sillyVal == "1"
+       sillyFunc := func(format string, args ...interface{}) {
+               if logSilly {
+                       log.Debugf("SILLY: "+format, args...)
+               }
+       }
+
        // Define default configuration
        ctx := Context{
-               ProgName: cliCtx.App.Name,
-               Log:      log,
-               Exit:     make(chan os.Signal, 1),
+               ProgName:      cliCtx.App.Name,
+               Log:           log,
+               LogLevelSilly: logSilly,
+               LogSillyf:     sillyFunc,
+               Exit:          make(chan os.Signal, 1),
 
-               webServer:     nil,
+               webServer:  nil,
                xdsServers: make(map[string]*XdsServer),
-               events:        nil,
+               events:     nil,
        }
 
        // register handler on SIGTERM / exit