summaryrefslogtreecommitdiff
path: root/cmd/util/debug.go
blob: 9b94510d7d99451fe44f463a8ed8dabe4b8196be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package util

import (
	"github.com/sirupsen/logrus"
	"github.com/spiral/roadrunner"
	"strings"
)

// LogEvent outputs rr event into given logger and return false if event was not handled.
func LogEvent(logger *logrus.Logger, event int, ctx interface{}) bool {
	switch event {
	case roadrunner.EventWorkerKill:
		w := ctx.(*roadrunner.Worker)
		logger.Warning(Sprintf(
			"<white+hb>worker.%v</reset> <yellow>killed</reset>",
			*w.Pid,
		))
		return true
	case roadrunner.EventWorkerError:
		err := ctx.(roadrunner.WorkerError)
		logger.Error(Sprintf(
			"<white+hb>worker.%v</reset> <red>%s</reset>",
			*err.Worker.Pid,
			err.Caused,
		))
		return true
	}

	// outputs
	switch event {
	case roadrunner.EventStderrOutput:
		for _, line := range strings.Split(string(ctx.([]byte)), "\n") {
			if line == "" {
				continue
			}

			logger.Warning(strings.Trim(line, "\r\n"))
		}

		return true
	}

	// rr server events
	switch event {
	case roadrunner.EventServerFailure:
		logger.Error(Sprintf("<red>server is dead</reset>"))
		return true
	}

	// pool events
	switch event {
	case roadrunner.EventPoolConstruct:
		logger.Debug(Sprintf("<cyan>new worker pool</reset>"))
		return true
	case roadrunner.EventPoolError:
		logger.Error(Sprintf("<red>%s</reset>", ctx))
		return true
	}

	return false
}