Skip to content
Snippets Groups Projects
Commit 68888f89 authored by Manuel Kieweg's avatar Manuel Kieweg
Browse files

Merge branch '7-logging-which-way-we-go' into 'develop'

Resolve "Logging: Which way we go?"

See merge request cocsn/gosdn!22
parents 0f544811 8f012fce
No related branches found
No related tags found
2 merge requests!22Resolve "Logging: Which way we go?",!18Develop
Pipeline #52106 passed
package database
import (
"log"
"code.fbi.h-da.de/cocsn/gosdn/log"
"github.com/neo4j/neo4j-go-driver/neo4j"
)
......@@ -74,7 +73,7 @@ func (d Database) StoreNodes(json string) {
logError("failed storing Nodes into database", err)
log.Printf("successfully added Nodes into database")
log.Info("successfully added Nodes into database")
}
//StoreNodeEdgePoints stores the given node edge points (interfaces)
......@@ -101,7 +100,7 @@ func (d Database) StoreNodeEdgePoints(json string) {
setNodeNodeEdgePointsRelation(session)
log.Printf("successfully added NodeEdgePoints into database")
log.Info("successfully added NodeEdgePoints into database")
}
......@@ -121,12 +120,12 @@ func setNodeNodeEdgePointsRelation(session neo4j.Session) {
logError("failed storing NodeNodeEdgePointsRelation into database", err)
log.Printf("successfully stored NodeNodeEdgePointsRelation into database")
log.Info("successfully stored NodeNodeEdgePointsRelation into database")
}
//logError logs error with custom and error message
func logError(message string, err error) {
if err != nil {
log.Fatalf("%v: %v", message, err)
log.Info("%v: %v", message, err)
}
}
package log
import (
"fmt"
"io"
"os"
"sync"
"time"
)
var logger *Logger
var once sync.Once
// Logger is a wrapper for log.Logger and provides
// methods to enable and disable logging.
type Logger struct {
Out io.Writer
Loglevel Level
lock sync.Mutex
}
func get() *Logger {
once.Do(func() {
logger = &Logger{
Out: os.Stdout,
Loglevel: INFO,
lock: sync.Mutex{},
}
})
return logger
}
func Loglevel(level Level) {
l := get()
l.lock.Lock()
defer l.lock.Unlock()
l.Loglevel = level
}
func Output(out io.Writer) {
l := get()
l.lock.Lock()
defer l.lock.Unlock()
l.Out = out
}
func Debug(args ...interface{}) {
log(DEBUG, args)
}
func Info(args ...interface{}) {
log(INFO, args)
}
func Warn(args ...interface{}) {
log(WARNING, args)
}
func Error(args ...interface{}) {
log(ERROR, args)
}
func Fatal(args ...interface{}) {
log(FATAL, args)
}
func Panic(args ...interface{}) {
log(PANIC, args)
}
func log(level Level, args ...interface{}) {
l := get()
l.lock.Lock()
defer l.lock.Unlock()
if level <= l.Loglevel {
msg := fmt.Sprint(args...)
logMessage := time.Now().Format(time.RFC3339) + "\t" + prefix(level) + "\t" + msg + "\n"
l.Out.Write([]byte(logMessage))
}
}
func prefix(level Level) string {
switch level {
case PANIC:
return "PANIC"
case FATAL:
return "FATAL"
case ERROR:
return "ERROR"
case WARNING:
return "WARNING"
case INFO:
return "INFO"
case DEBUG:
return "DEBUG"
}
return ""
}
package log
type Level uint8
const (
PANIC Level = iota
FATAL
ERROR
WARNING
INFO
DEBUG
)
package main
import (
"code.fbi.h-da.de/cocsn/gosdn/log"
"code.fbi.h-da.de/cocsn/gosdn/nucleus"
"flag"
)
......@@ -15,8 +16,10 @@ func main() {
flag.Parse()
cliSocket := *cliListenAddr + ":" + *cliListenPort
log.Loglevel(log.DEBUG)
// hand off to cmd for further processing
nucleus.StartUp(cliSocket, *configFileName)
log.Info("Startup completed")
nucleus.Run()
// nothing to see here, please move on!
......
......@@ -2,10 +2,10 @@ package nucleus
import (
"code.fbi.h-da.de/cocsn/gosdn/database"
"code.fbi.h-da.de/cocsn/gosdn/log"
"code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces"
"code.fbi.h-da.de/cocsn/gosdn/restconf/client/ciena"
"github.com/BurntSushi/toml"
"log"
"os"
)
......
......@@ -3,11 +3,11 @@ package nucleus
import (
pb "code.fbi.h-da.de/cocsn/gosdn/cliInterface"
"code.fbi.h-da.de/cocsn/gosdn/database"
"code.fbi.h-da.de/cocsn/gosdn/log"
"code.fbi.h-da.de/cocsn/gosdn/nucleus/interfaces"
"context"
_ "github.com/mattn/go-sqlite3"
"google.golang.org/grpc"
"log"
"net"
"time"
)
......@@ -20,31 +20,31 @@ type server struct {
// SayHello implements helloworld.GreeterServer
func (s *server) SayHello(ctx context.Context, in *pb.HelloRequest) (*pb.HelloReply, error) {
log.Printf("Received: %v", in.GetName())
log.Debug("Received: %v", in.GetName())
return &pb.HelloReply{Message: "Hello " + in.GetName()}, nil
}
func (s *server) Shutdown(ctx context.Context, in *pb.ShutdownRequest) (*pb.ShutdownReply, error) {
log.Printf("Received: %v", in.GetName())
log.Debug("Received: %v", in.GetName())
isRunning = false
return &pb.ShutdownReply{Message: "Shutdown " + in.GetName()}, nil
}
func getCLIGoing(core *Core) {
log.Println("Starting: GetCLIGoing")
log.Info("Starting: GetCLIGoing")
// Boot-up the control interface for the cli
cliControlListener, err := net.Listen("tcp", core.config.CliSocket)
if err != nil {
log.Fatalf("failed to listen: %v", err)
log.Fatal("failed to listen: %v", err)
}
cliControlServer := grpc.NewServer()
pb.RegisterGreeterServer(cliControlServer, &server{core: core})
if err := cliControlServer.Serve(cliControlListener); err != nil {
log.Fatalf("failed to serve: %v", err)
log.Fatal("failed to serve: %v", err)
}
log.Println("Started: GetCLIGoing")
log.Info("Started: GetCLIGoing")
}
/*
......@@ -54,8 +54,8 @@ func getCLIGoing(core *Core) {
// Next-up: backend database.
func StartUp(socket, filename string) {
log.Println("This is the network superintendent...")
log.Println("Starting my ducks")
log.Info("This is the network superintendent...")
log.Info("Starting my ducks")
// Init the Core
core := Core{
clients: make(map[string]interfaces.Client, 0),
......@@ -64,7 +64,7 @@ func StartUp(socket, filename string) {
core.Init(socket, filename)
// Start the GRCP CLI
go getCLIGoing(&core)
log.Println("and ready for take off")
log.Info("and ready for take off")
}
......@@ -78,8 +78,8 @@ func Run() {
for isRunning {
time.Sleep(10 * time.Second)
log.Println("Still alive...")
log.Debug("Still alive...")
}
log.Println("Good bye....!")
log.Info("Good bye....!")
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment