Implement Logger (#228)

* Added new base logger

* updated example and test configs

* updated exchange helpers restful router & server

* logPath is now passed to the logger to remove dependency on common package

* updated everything besides exchanges to use new logger

* alphapoint to bitmex done

* updated bitmex bitstamp bittrex btcc and also performance changes to logger

* btcmarkets coinbase coinut exmo gateio wrappers updated

* gateio and gemini logger updated

* hitbtc huobi itbit & kraken updated

* All exchanges updatd

* return correct error for disabled websocket

* don't disconnect client on invalid json

* updated router internal logging

* log.Fatal to t.Error for tests

* Changed from fatal to error failure to set maxprocs

* output ANSI codes for everything but windows for now due to lack of windows support

* added error handling to logger and unit tests

* clear wording on print -> log.print

* added benchmark test

* cleaned up import sections

* Updated logger based on PR requests (added default config options on failure/setting errors)

* ah this should fix travici enc config issue

* Load entire config and clear out logging to hopefully fix travisci issue

* wording & test error handling

* fixed formatting issues based on feedback

* fixed formatting issues based on feedback

* changed CheckDir to use mkdirall instead of mkdir and other changes based on feedback
This commit is contained in:
Andrew
2019-01-08 21:56:22 +11:00
committed by Adrian Gallagher
parent bfbd496c3a
commit d01e7bad72
103 changed files with 1028 additions and 657 deletions

View File

@@ -1,12 +1,12 @@
package base
import (
"log"
"time"
"github.com/thrasher-/gocryptotrader/config"
"github.com/thrasher-/gocryptotrader/exchanges/orderbook"
"github.com/thrasher-/gocryptotrader/exchanges/ticker"
log "github.com/thrasher-/gocryptotrader/logger"
)
// IComm is the main interface array across the communication packages
@@ -33,7 +33,7 @@ func (c IComm) Setup() {
if c[i].IsEnabled() && !c[i].IsConnected() {
err := c[i].Connect()
if err != nil {
log.Printf("Communications: %s failed to connect. Err: %s", c[i].GetName(), err)
log.Errorf("Communications: %s failed to connect. Err: %s", c[i].GetName(), err)
}
}
}
@@ -45,7 +45,7 @@ func (c IComm) PushEvent(event Event) {
if c[i].IsEnabled() && c[i].IsConnected() {
err := c[i].PushEvent(event)
if err != nil {
log.Printf("Communications error - PushEvent() in package %s with %v",
log.Errorf("Communications error - PushEvent() in package %s with %v",
c[i].GetName(), event)
}
}
@@ -58,12 +58,12 @@ func (c IComm) GetEnabledCommunicationMediums() {
var count int
for i := range c {
if c[i].IsEnabled() && c[i].IsConnected() {
log.Printf("Communications: Medium %s is enabled.", c[i].GetName())
log.Debugf("Communications: Medium %s is enabled.", c[i].GetName())
count++
}
}
if count == 0 {
log.Println("Communications: No communication mediums are enabled.")
log.Warnf("Communications: No communication mediums are enabled.")
}
}

View File

@@ -7,7 +7,6 @@ import (
"encoding/json"
"errors"
"fmt"
"log"
"net/http"
"sync"
"time"
@@ -16,6 +15,7 @@ import (
"github.com/thrasher-/gocryptotrader/common"
"github.com/thrasher-/gocryptotrader/communications/base"
"github.com/thrasher-/gocryptotrader/config"
log "github.com/thrasher-/gocryptotrader/logger"
)
// const declares main slack url and commands that will be supported on client
@@ -154,13 +154,13 @@ func (s *Slack) NewConnection() error {
}
if s.Verbose {
log.Printf("%s [%s] connected to %s [%s] \nWebsocket URL: %s.\n",
log.Debugf("%s [%s] connected to %s [%s] \nWebsocket URL: %s.\n",
s.Details.Self.Name,
s.Details.Self.ID,
s.Details.Team.Domain,
s.Details.Team.ID,
s.Details.URL)
log.Printf("Slack channels: %s", s.GetChannelsString())
log.Debugf("Slack channels: %s", s.GetChannelsString())
}
s.TargetChannelID, err = s.GetIDByName(s.TargetChannel)
@@ -197,14 +197,14 @@ func (s *Slack) WebsocketReader() {
for {
_, resp, err := s.WebsocketConn.ReadMessage()
if err != nil {
log.Fatal(err)
log.Error(err)
}
var data WebsocketResponse
err = common.JSONDecode(resp, &data)
if err != nil {
log.Println(err)
log.Error(err)
continue
}
@@ -239,10 +239,10 @@ func (s *Slack) WebsocketReader() {
case "pong":
if s.Verbose {
log.Println("Pong received from server")
log.Debugf("Pong received from server")
}
default:
log.Println(string(resp))
log.Debugf(string(resp))
}
}
}
@@ -254,7 +254,7 @@ func (s *Slack) handlePresenceChange(resp []byte) error {
return err
}
if s.Verbose {
log.Printf("Presence change. User %s [%s] changed status to %s\n",
log.Debugf("Presence change. User %s [%s] changed status to %s\n",
s.GetUsernameByID(pres.User),
pres.User, pres.Presence)
}
@@ -271,7 +271,7 @@ func (s *Slack) handleMessageResponse(resp []byte, data WebsocketResponse) error
return err
}
if s.Verbose {
log.Printf("Msg received by %s [%s] with text: %s\n",
log.Debugf("Msg received by %s [%s] with text: %s\n",
s.GetUsernameByID(msg.User),
msg.User, msg.Text)
}
@@ -283,7 +283,7 @@ func (s *Slack) handleMessageResponse(resp []byte, data WebsocketResponse) error
func (s *Slack) handleErrorResponse(data WebsocketResponse) error {
if data.Error.Msg == "Socket URL has expired" {
if s.Verbose {
log.Println("Slack websocket URL has expired.. Reconnecting")
log.Debugf("Slack websocket URL has expired.. Reconnecting")
}
if s.WebsocketConn == nil {
@@ -291,7 +291,7 @@ func (s *Slack) handleErrorResponse(data WebsocketResponse) error {
}
if err := s.WebsocketConn.Close(); err != nil {
log.Println(err)
log.Error(err)
}
s.ReconnectURL = ""
@@ -303,7 +303,7 @@ func (s *Slack) handleErrorResponse(data WebsocketResponse) error {
func (s *Slack) handleHelloResponse(data WebsocketResponse) {
if s.Verbose {
log.Println("Websocket connected successfully.")
log.Debugln("Websocket connected successfully.")
}
s.Connected = true
go s.WebsocketKeepAlive()
@@ -320,7 +320,7 @@ func (s *Slack) handleReconnectResponse(resp []byte) error {
}
s.ReconnectURL = recURL.URL
if s.Verbose {
log.Printf("Reconnect URL set to %s\n", s.ReconnectURL)
log.Debugf("Reconnect URL set to %s\n", s.ReconnectURL)
}
return nil
}
@@ -332,7 +332,7 @@ func (s *Slack) WebsocketKeepAlive() {
for {
<-ticker.C
if err := s.WebsocketSend("ping", ""); err != nil {
log.Println("slack WebsocketKeepAlive() error", err)
log.Debugf("slack WebsocketKeepAlive() error %s", err)
}
}
}

View File

@@ -7,11 +7,11 @@ import (
"bytes"
"errors"
"fmt"
"log"
"github.com/thrasher-/gocryptotrader/common"
"github.com/thrasher-/gocryptotrader/communications/base"
"github.com/thrasher-/gocryptotrader/config"
log "github.com/thrasher-/gocryptotrader/logger"
)
const (
@@ -87,7 +87,7 @@ func (t *Telegram) PollerStart() {
for {
resp, err := t.GetUpdates()
if err != nil {
log.Fatal(err)
log.Error(err)
}
for i := range resp.Result {
@@ -95,7 +95,7 @@ func (t *Telegram) PollerStart() {
if string(resp.Result[i].Message.Text[0]) == "/" {
err = t.HandleMessages(resp.Result[i].Message.Text, resp.Result[i].Message.From.ID)
if err != nil {
log.Fatal(err)
log.Error(err)
}
}
t.Offset = resp.Result[i].UpdateID