Skip to content

Commit

Permalink
add log to file
Browse files Browse the repository at this point in the history
Signed-off-by: Vladimir Lavor <vlavor@cisco.com>
  • Loading branch information
VladoLavor committed May 6, 2019
1 parent 3f08e41 commit 82fdf0e
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 11 deletions.
4 changes: 2 additions & 2 deletions cmd/vpp-agent-init/initializer/initializer.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ func (i *initializer) StartVPP(statChan chan status.ProcessStatus) error {
}
}

vppLog := newPmLogger("vpp")
vppLog := newPmLogger("vpp", defaultLogfilePath)
i.vpp = i.pm.NewProcess("vpp", *vppBinaryPath, pm.Args("-c", *vppStartupConfigPath),
pm.Writer(vppLog, vppLog), pm.Notify(statChan), pm.AutoTerminate())
err := i.vpp.Start()
Expand Down Expand Up @@ -121,7 +121,7 @@ func (i *initializer) StartAgent(statChan chan status.ProcessStatus) error {
return nil
}

agentLog := newPmLogger("agent")
agentLog := newPmLogger("agent", defaultLogfilePath)
i.agent = i.pm.NewProcess("agent", *agentBinaryPath, pm.Args("--config-dir="+*agentConfigDir),
pm.Writer(agentLog, agentLog), pm.Notify(statChan), pm.AutoTerminate())
err := i.agent.Start()
Expand Down
55 changes: 46 additions & 9 deletions cmd/vpp-agent-init/initializer/pmlogger.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,25 +18,62 @@
package initializer

import (
"io"
"log"
"os"
"sync"

"github.com/go-errors/errors"
"github.com/ligato/cn-infra/logging"
"github.com/ligato/cn-infra/logging/logrus"
"os"
)

const defaultLogfilePath = "/var/log/vpp-agent-init.log"

var mx sync.Mutex

// Process manager logger, a helper struct which can be passed to the process
// manager writer
type pmLogger struct {
log logging.Logger
log logging.Logger
logfilePath string
}

func newPmLogger(name string) *pmLogger {
vppLogger := &pmLogger{
log: logrus.NewLogger(name),
// Create a new process manager logger with default logfile path (if no custom is specified)
func newPmLogger(name, logfilePath string) *pmLogger {
if logfilePath == "" {
logfilePath = defaultLogfilePath
}

pmLog := &pmLogger{
log: logrus.NewLogger(name),
logfilePath: logfilePath,
}
vppLogger.log.SetOutput(os.Stdout)
vppLogger.log.SetLevel(logging.DebugLevel)
return vppLogger
pmLog.log.SetOutput(os.Stdout)
pmLog.log.SetLevel(logging.DebugLevel)
return pmLog
}

// Write to logfile and print given message
func (l pmLogger) Write(p []byte) (n int, err error) {
mx.Lock()
defer mx.Unlock()

file, err := os.OpenFile(l.logfilePath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
return 0, errors.Errorf("error opening file: %v", err)
}
defer func() {
if err := file.Close(); err != nil {
l.log.Errorf("error closing file %s", l.logfilePath)
}
}()

writer := io.Writer(file)
log.SetOutput(writer)
log.Printf("%s\n", p)

l.log.Debugf("%s", p)

return len(p), nil
}
}

0 comments on commit 82fdf0e

Please sign in to comment.