From 1d8b47762e64bd2202a78ef15573c5ef903b5328 Mon Sep 17 00:00:00 2001 From: Henrik Hautakoski Date: Mon, 3 Jan 2022 17:34:02 +0100 Subject: [PATCH] replace standard logger for github.com/inconshreveable/log15 --- go.mod | 13 ++++--- go.sum | 11 ++++++ log | 4 +++ src/log/go.mod | 3 -- src/log/interface.go | 29 ---------------- src/log/wrapper.go | 83 -------------------------------------------- src/main.go | 24 +++++++------ src/server.go | 8 ++--- 8 files changed, 38 insertions(+), 137 deletions(-) create mode 100644 log delete mode 100644 src/log/go.mod delete mode 100644 src/log/interface.go delete mode 100644 src/log/wrapper.go diff --git a/go.mod b/go.mod index 6b0b9d8..87b2821 100644 --- a/go.mod +++ b/go.mod @@ -3,18 +3,17 @@ module github.com/eosswedenorg/eosio-api-healthcheck go 1.14 require ( - internal/eosapi v1.0.0 - internal/log v1.0.0 - internal/utils v1.0.0 - - github.com/eosswedenorg-go/pid v1.0.0 github.com/eosswedenorg-go/haproxy v0.0.0-20220101140534-fccfdd93a8cd + github.com/eosswedenorg-go/pid v1.0.0 github.com/eosswedenorg-go/tcp_server v0.1.0 + github.com/go-stack/stack v1.8.1 // indirect + github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac + github.com/mattn/go-colorable v0.1.12 // indirect github.com/pborman/getopt/v2 v2.1.0 + internal/eosapi v1.0.0 + internal/utils v1.0.0 ) replace internal/eosapi => ./src/eosapi -replace internal/log => ./src/log - replace internal/utils => ./src/utils diff --git a/go.sum b/go.sum index 80b64b8..86ffd61 100644 --- a/go.sum +++ b/go.sum @@ -7,13 +7,21 @@ github.com/eosswedenorg-go/pid v1.0.0 h1:k1ra19cgWBHnX5gWQq+eUhNHIjT7hdhsYGp+Ovf github.com/eosswedenorg-go/pid v1.0.0/go.mod h1:c9nVBDmo8pa3dVjrZjDUN4/DT1ChmfuCWXt6lHsagRc= github.com/eosswedenorg-go/tcp_server v0.1.0 h1:nbXJK4sPSGn3zGPGWR2vdmj+s/Ywp58k7dZ9fuYNZlI= github.com/eosswedenorg-go/tcp_server v0.1.0/go.mod h1:PZd1z/KzNlEpmKtW0Zu9dHJLs5PAMTNR3jPbMGWhZIw= +github.com/go-stack/stack v1.8.1 h1:ntEHSVwIt7PNXNpgPmVfMrNhLtgjlmnZha2kOpuRiDw= +github.com/go-stack/stack v1.8.1/go.mod h1:dcoOX6HbPZSZptuspn9bctJ+N/CnF5gGygcUP3XYfe4= github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/imroc/req v0.3.2 h1:M/JkeU6RPmX+WYvT2vaaOL0K+q8ufL5LxwvJc4xeB4o= github.com/imroc/req v0.3.2/go.mod h1:F+NZ+2EFSo6EFXdeIbpfE9hcC233id70kf0byW97Caw= +github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac h1:n1DqxAo4oWPMvH1+v+DLYlMCecgumhhgnxAPdqDIFHI= +github.com/inconshreveable/log15 v0.0.0-20201112154412-8562bdadbbac/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o= github.com/json-iterator/go v1.1.9 h1:9yzud/Ht36ygwatGx56VwCZtlI/2AD15T1X2sjSuGns= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/liamylian/jsontime/v2 v2.0.0 h1:3if2kDW/boymUdO+4Qj/m4uaXMBSF6np9KEgg90cwH0= github.com/liamylian/jsontime/v2 v2.0.0/go.mod h1:UHp1oAPqCBfspokvGmaGe0IAl2IgOpgOgDaKPcvcGGY= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -27,3 +35,6 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.3.0 h1:TivCn/peBQ7UY8ooIcPgZFpTNSz0Q2U6UrFlUfqbe0Q= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6 h1:foEbQz/B0Oz6YIqu/69kfXPYeFQAuuMYFkjaqXzl5Wo= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= diff --git a/log b/log new file mode 100644 index 0000000..cb49d87 --- /dev/null +++ b/log @@ -0,0 +1,4 @@ +t=2022-01-03T17:30:52+0100 lvl=info msg="Process is starting" pid=46735 +t=2022-01-03T17:30:52+0100 lvl=info msg="TCP Server started" addr=127.0.0.1:1337 +t=2022-01-03T17:30:54+0100 lvl=info msg="API Check" version=v1 url=http://127.0.0.1:1234 block=5 status=failed +t=2022-01-03T17:30:54+0100 lvl=warn msg="API Error" message="Get \"http://127.0.0.1:1234/v1/chain/get_info\": dial tcp 127.0.0.1:1234: connect: connection refused" diff --git a/src/log/go.mod b/src/log/go.mod deleted file mode 100644 index 72c9405..0000000 --- a/src/log/go.mod +++ /dev/null @@ -1,3 +0,0 @@ -module internal/log - -go 1.14 diff --git a/src/log/interface.go b/src/log/interface.go deleted file mode 100644 index 4977535..0000000 --- a/src/log/interface.go +++ /dev/null @@ -1,29 +0,0 @@ - -package log - -import ( - "io" - stdlog "log" -) - -// Create and export our different log functions. -// --------------------------------------------------------- -var ( - Info logWrapper = stdWrapper - Notice logWrapper = createWrapper(noticeLogger) - Warning logWrapper = createWrapper(warningLogger) - Error logWrapper = createWrapper(errorLogger) -) - -// SetWriter -// Configure the logger to use this writer. -// --------------------------------------------------------- -func SetWriter(handle io.Writer) { - - // Info is standard logger. - stdlog.SetOutput(handle) - - noticeLogger.SetOutput(handle) - warningLogger.SetOutput(handle) - errorLogger.SetOutput(handle) -} diff --git a/src/log/wrapper.go b/src/log/wrapper.go deleted file mode 100644 index 4dc79e7..0000000 --- a/src/log/wrapper.go +++ /dev/null @@ -1,83 +0,0 @@ - -package log - -import ( - "os" - stdlog "log" -) - - -// --------------------------------------------------------- -// Constants -// --------------------------------------------------------- - - -// Default flags to use. -const defaultFlags = stdlog.Lmsgprefix | stdlog.Ldate | stdlog.Ltime | stdlog.Lmicroseconds - -// Prefixes -const ( - InfoPrefix = "\033[1;34mINFO\033[0m : " - NoticePrefix = "\033[1;36mNOTICE\033[0m : " - WarningPrefix = "\033[1;33mWARN\033[0m : " - ErrorPrefix = "\033[1;31mERROR\033[0m : " -) - - -// --------------------------------------------------------- -// Function wrappers -// --------------------------------------------------------- - - -// Define logWrapper prototype -// Function that takes a format string and variadic number -// of arguments (like printf) -// --------------------------------------------------------- -type logWrapper func(format string, args ...interface{}) - -// Create a wrapper function. -// This creates a function wrapper around -// stdlog.Logger.Printf() -// --------------------------------------------------------- -func createWrapper(logger *stdlog.Logger) logWrapper { - return func(format string, args ...interface{}) { - logger.Printf(format, args...) - } -} - -// Standard log wrapper -// Wrapper around stdlog.Printf() -// --------------------------------------------------------- -func stdWrapper(format string, args ...interface{}) { - stdlog.Printf(format, args...) -} - - -// --------------------------------------------------------- -// Logger objects. -// --------------------------------------------------------- - - -var ( - // Info is standard logger. omitted here as we don't have direct access to the object. - warningLogger *stdlog.Logger = stdlog.New(os.Stdout, WarningPrefix, defaultFlags) - noticeLogger *stdlog.Logger = stdlog.New(os.Stdout, NoticePrefix, defaultFlags) - errorLogger *stdlog.Logger = stdlog.New(os.Stdout, ErrorPrefix, defaultFlags) -) - - -// --------------------------------------------------------- -// Initilize the module -// --------------------------------------------------------- - - -func init() { - - // Info is standard logger. - // We are not allowed to access the standard - // Logger object, so we have to use the standalone functions. - - stdlog.SetOutput(os.Stdout) - stdlog.SetPrefix(InfoPrefix) - stdlog.SetFlags(defaultFlags) -} diff --git a/src/main.go b/src/main.go index 326f62b..72d59de 100644 --- a/src/main.go +++ b/src/main.go @@ -5,7 +5,7 @@ import ( "os" "os/signal" "syscall" - "internal/log" + log "github.com/inconshreveable/log15" "github.com/eosswedenorg-go/pid" "github.com/pborman/getopt/v2" ) @@ -22,6 +22,8 @@ var pidFile string // File descriptor to the current log file. var logfd *os.File +var logger log.Logger + // argv_listen_addr // Parse listen address from command line. // --------------------------------------------------------- @@ -51,19 +53,19 @@ func setLogFile() { // Open file fd, err := os.OpenFile(logFile, os.O_APPEND | os.O_CREATE | os.O_WRONLY, 0644) if err != nil { - log.Error(err.Error()) + logger.Error(err.Error()) } // Try close if old descriptor is defined. if logfd != nil { if err = logfd.Close(); err != nil { - log.Error(err.Error()) + logger.Error(err.Error()) } } // Update variable and set log writer. logfd = fd - log.SetWriter(logfd) + logger.SetHandler(log.StreamHandler(logfd, log.LogfmtFormat())) } // signalEventLoop() @@ -96,9 +98,9 @@ func signalEventLoop() { msg += "No Filedescriptor to update (most likely uses standard out/err streams)" } - log.Info(msg) + logger.Info(msg) default: - log.Warning("Unknown signal %s", sig) + logger.Warn("Unknown signal", "signal", sig) } } }() @@ -111,6 +113,8 @@ func main() { var version bool var addr string; + logger = log.New() + // Command line parsing getopt.FlagLong(&version, "version", 'v', "Print version") getopt.FlagLong(&logFile, "log", 'l', "Path to log file", "file") @@ -127,13 +131,13 @@ func main() { setLogFile() } - log.Info("Process is starting with PID: %d", pid.Get()) + logger.Info("Process is starting", "pid", pid.Get()) if len(pidFile) > 0 { - log.Info("Writing pidfile: %s", pidFile) + logger.Info("Writing pidfile", "file", pidFile) err := pid.Save(pidFile) if err != nil { - log.Error("Failed to write pidfile: %v", err) + logger.Error("Failed to write pidfile", "msg", err) } } @@ -142,7 +146,7 @@ func main() { addr = argv_listen_addr() - log.Info("Listening on: %s", addr) + logger.Info("TCP Server started", "addr", addr) // Start listening to TCP Connections spawnTcpServer(addr); diff --git a/src/server.go b/src/server.go index c38d066..7bc2e9c 100644 --- a/src/server.go +++ b/src/server.go @@ -5,7 +5,6 @@ import ( "time" "strings" "strconv" - "internal/log" "internal/eosapi" "internal/utils" "github.com/eosswedenorg-go/haproxy" @@ -136,11 +135,11 @@ func onTcpMessage(c *tcp_server.Client, args string) { status, msg = check_api(params, float64(block_time)) } - log.Info("Status %s - %s (%d blocks): %s", - version, params.Url, block_time / 2, status) + logger.Info("API Check", "version", version, "url", params.Url, + "block", block_time / 2, "status", status) if status != haproxy.HealthCheckUp && len(msg) > 0 { - log.Warning(msg) + logger.Warn("API Check Failed", "message", msg) } // Report status to HAproxy @@ -152,7 +151,6 @@ func onTcpMessage(c *tcp_server.Client, args string) { // --------------------------------------------------------- func spawnTcpServer(addr string) { - server := tcp_server.New(addr) server.OnMessage(onTcpMessage) server.Listen()