Skip to content

Commit 0d52fb6

Browse files
mirythepwagnerStrech
authored
Allow to change log level for server. (#346)
Add possobility to change output verbosity via environment varaible `LOG_LEVEL`. There are several values: panic, fatal, error, warn or warning, info, debug and trace. By default `info` is used. Co-authored-by: Pete Wagner <[email protected]> Co-authored-by: Sergey Fedorov <[email protected]>
1 parent 3f2973e commit 0d52fb6

File tree

7 files changed

+52
-15
lines changed

7 files changed

+52
-15
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
* fix: The release-test task is always success.
88
add: Allow to run release-test on arm machines. (#340, @miry)
99
* Upgrade `goreleaser`. Support `armv7` and `armv6` oses. (#339, @mitchellrj)
10+
* Allow to change log level for server. (#346, @miry)
1011

1112
# [2.2.0]
1213

Dockerfile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,7 @@ EXPOSE 8474
44
ENTRYPOINT ["/toxiproxy"]
55
CMD ["-host=0.0.0.0"]
66

7+
ENV LOG_LEVEL=info
8+
79
COPY toxiproxy-server-linux-* /toxiproxy
810
COPY toxiproxy-cli-linux-* /toxiproxy-cli

README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@ stopping you from creating a client in any other language (see
4949
1. [Upgrading from 1.x](#upgrading-from-toxiproxy-1x)
5050
2. [Populating](#2-populating-toxiproxy)
5151
3. [Using](#3-using-toxiproxy)
52+
4. [Logging](#4-logging)
5253
5. [Toxics](#toxics)
5354
1. [Latency](#latency)
5455
2. [Down](#down)
@@ -360,6 +361,11 @@ toxiproxy-cli toxic add -t latency -a latency=1000 shopify_test_redis_master
360361

361362
Please consult your respective client library on usage.
362363

364+
### 4. Logging
365+
366+
There are the following log levels: panic, fatal, error, warn or warning, info, debug and trace.
367+
The level could be updated via environment variable `LOG_LEVEL`.
368+
363369
### Toxics
364370

365371
Toxics manipulate the pipe between the client and upstream. They can be added

api.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,19 +31,20 @@ func (server *ApiServer) PopulateConfig(filename string) {
3131
"config": filename,
3232
"error": err,
3333
}).Error("Error reading config file")
34+
return
35+
}
36+
37+
proxies, err := server.Collection.PopulateJson(file)
38+
if err != nil {
39+
logrus.WithFields(logrus.Fields{
40+
"config": filename,
41+
"error": err,
42+
}).Error("Failed to populate proxies from file")
3443
} else {
35-
proxies, err := server.Collection.PopulateJson(file)
36-
if err != nil {
37-
logrus.WithFields(logrus.Fields{
38-
"config": filename,
39-
"error": err,
40-
}).Error("Failed to populate proxies from file")
41-
} else {
42-
logrus.WithFields(logrus.Fields{
43-
"config": filename,
44-
"proxies": len(proxies),
45-
}).Info("Populated proxies from file")
46-
}
44+
logrus.WithFields(logrus.Fields{
45+
"config": filename,
46+
"proxies": len(proxies),
47+
}).Info("Populated proxies from file")
4748
}
4849
}
4950

bin/e2e

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ go run testing/endpoint.go 2>&1 | sed -e 's/^/[web] /' &
2222

2323
echo "=== Starting Toxiproxy"
2424

25-
./dist/toxiproxy-server 2>&1 | sed -e 's/^/[toxiproxy] /' &
25+
LOG_LEVEL=debug ./dist/toxiproxy-server 2>&1 | sed -e 's/^/[toxiproxy] /' &
2626

2727
echo "=== Wait when service are available"
2828

cmd/cli/cli.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,11 @@ import (
77
"strconv"
88
"strings"
99

10-
toxiproxyServer "github.com/Shopify/toxiproxy/v2"
11-
toxiproxy "github.com/Shopify/toxiproxy/v2/client"
1210
"github.com/urfave/cli/v2"
1311
terminal "golang.org/x/term"
12+
13+
toxiproxyServer "github.com/Shopify/toxiproxy/v2"
14+
toxiproxy "github.com/Shopify/toxiproxy/v2/client"
1415
)
1516

1617
const (

cmd/server/server.go

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,12 @@ import (
55
"math/rand"
66
"os"
77
"os/signal"
8+
"strings"
89
"syscall"
910
"time"
1011

12+
"github.com/sirupsen/logrus"
13+
1114
"github.com/Shopify/toxiproxy/v2"
1215
)
1316

@@ -27,6 +30,8 @@ func init() {
2730
}
2831

2932
func main() {
33+
setupLogger()
34+
3035
server := toxiproxy.NewServer()
3136
if len(config) > 0 {
3237
server.PopulateConfig(config)
@@ -42,3 +47,24 @@ func main() {
4247

4348
server.Listen(host, port)
4449
}
50+
51+
func setupLogger() {
52+
val, ok := os.LookupEnv("LOG_LEVEL")
53+
if !ok {
54+
return
55+
}
56+
57+
lvl, err := logrus.ParseLevel(val)
58+
if err == nil {
59+
logrus.SetLevel(lvl)
60+
return
61+
}
62+
63+
valid_levels := make([]string, len(logrus.AllLevels))
64+
for i, level := range logrus.AllLevels {
65+
valid_levels[i] = level.String()
66+
}
67+
levels := strings.Join(valid_levels, ",")
68+
69+
logrus.Errorf("unknown LOG_LEVEL value: \"%s\", use one of: %s", val, levels)
70+
}

0 commit comments

Comments
 (0)