Skip to content

Commit

Permalink
Add hostname, DC, and programname/pid to stdout logger (#6342)
Browse files Browse the repository at this point in the history
This mimics what we do for the syslog logger.
  • Loading branch information
jsha authored Sep 6, 2022
1 parent 27142ca commit 99f8f8d
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 18 deletions.
46 changes: 30 additions & 16 deletions log/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,13 +66,7 @@ func New(log *syslog.Writer, stdoutLogLevel int, syslogLogLevel int) (Logger, er
&bothWriter{
sync.Mutex{},
log,
&stdoutWriter{
level: stdoutLogLevel,
clk: clock.New(),
stdout: os.Stdout,
stderr: os.Stderr,
isatty: term.IsTerminal(int(os.Stdout.Fd())),
},
newStdoutWriter(stdoutLogLevel),
syslogLogLevel,
},
}, nil
Expand All @@ -81,14 +75,30 @@ func New(log *syslog.Writer, stdoutLogLevel int, syslogLogLevel int) (Logger, er
// StdoutLogger returns a Logger that writes solely to stdout and stderr.
// It is safe for concurrent use.
func StdoutLogger(level int) Logger {
return &impl{
&stdoutWriter{
level: level,
clk: clock.New(),
stdout: os.Stdout,
stderr: os.Stderr,
isatty: term.IsTerminal(int(os.Stdout.Fd())),
},
return &impl{newStdoutWriter(level)}
}

func newStdoutWriter(level int) *stdoutWriter {
shortHostname := "unknown"
datacenter := "unknown"
hostname, err := os.Hostname()
if err == nil {
splits := strings.SplitN(hostname, ".", 3)
shortHostname = splits[0]
if len(splits) > 1 {
datacenter = splits[1]
}
}

prefix := fmt.Sprintf("%s %s %s[%d]:", shortHostname, datacenter, path.Base(os.Args[0]), os.Getpid())

return &stdoutWriter{
prefix: prefix,
level: level,
clk: clock.New(),
stdout: os.Stdout,
stderr: os.Stderr,
isatty: term.IsTerminal(int(os.Stdout.Fd())),
}
}

Expand Down Expand Up @@ -149,6 +159,9 @@ type bothWriter struct {

// stdoutWriter implements writer and writes just to stdout.
type stdoutWriter struct {
// prefix is a set of information that is the same for every log line,
// imitating what syslog emits for us when we use the syslog writer.
prefix string
level int
clk clock.Clock
stdout io.Writer
Expand Down Expand Up @@ -230,9 +243,10 @@ func (w *stdoutWriter) logAtLevel(level syslog.Priority, msg string) {
}
}

if _, err := fmt.Fprintf(output, "%s%s %d %s %s%s\n",
if _, err := fmt.Fprintf(output, "%s%s %s %d %s %s%s\n",
color,
w.clk.Now().Format("2006-01-02T15:04:05.999999+07:00"),
w.prefix,
int(level),
path.Base(os.Args[0]),
msg,
Expand Down
4 changes: 2 additions & 2 deletions log/log_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -99,8 +99,8 @@ func TestStdoutLogger(t *testing.T) {
logger.Warning("Warning log")
logger.Info("Info log")

test.AssertEquals(t, stdout.String(), "1970-01-01T00:00:00+07:00 6 log.test Info log\n")
test.AssertEquals(t, stderr.String(), "1970-01-01T00:00:00+07:00 3 log.test [AUDIT] Error Audit\n1970-01-01T00:00:00+07:00 4 log.test Warning log\n")
test.AssertEquals(t, stdout.String(), "1970-01-01T00:00:00+07:00 6 log.test Info log\n")
test.AssertEquals(t, stderr.String(), "1970-01-01T00:00:00+07:00 3 log.test [AUDIT] Error Audit\n1970-01-01T00:00:00+07:00 4 log.test Warning log\n")
}

func TestSyslogMethods(t *testing.T) {
Expand Down

0 comments on commit 99f8f8d

Please sign in to comment.