aboutsummaryrefslogtreecommitdiff
path: root/pkg/utils/logging.go
blob: d98e78aa12ab2440cd6f43a3b47102f761b74a57 (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
package utils

import (
	"fmt"
	"io/ioutil"
	"log"
	"os"
	"strconv"
	"strings"
)

/*
 *  Brown University, CS1951L, Summer 2021
 *  Designed by: Colby Anderson, John Roy
 */

// Debug is optional logger for debugging
var Debug *log.Logger

// Out is logger to Stdout
var Out *log.Logger

// Err is logger to Stderr
var Err *log.Logger

// init initializes the loggers.
func init() {
	Debug = log.New(ioutil.Discard, "DEBUG: ", 0)
	Out = log.New(os.Stdout, "INFO: ", log.Ltime|log.Lshortfile)
	Err = log.New(os.Stderr, "ERROR: ", log.Ltime|log.Lshortfile)
}

// SetDebug turns debug print statements on or off.
func SetDebug(enabled bool) {
	if enabled {
		Debug.SetOutput(os.Stdout)
	} else {
		Debug.SetOutput(ioutil.Discard)
	}
}

func FmtAddr(addr string) string {
	if addr == "" {
		return ""
	}
	colors := []string{"\033[41m", "\033[42m", "\033[43m", "\033[44m", "\033[45m", "\033[46m", "\033[47m"}
	port, _ := strconv.ParseInt(strings.Split(addr, ":")[1], 10, 64)
	randomColor := colors[int(port)%len(colors)]
	return fmt.Sprintf("%v\033[97m[%v]\033[0m", randomColor, addr)
}

func Colorize(s string, seed int) string {
	lowestColor, highestColor := 104, 226
	return fmt.Sprintf("\033[38;5;%vm%v\033[0m", seed%(highestColor-lowestColor)+lowestColor, s)
}