Files
nats-server/server/log.go
2012-11-13 11:26:53 -08:00

99 lines
1.5 KiB
Go

// Copyright 2012 Apcera Inc. All rights reserved.
package server
import (
"fmt"
"log"
"strings"
)
// logging functionality, compatible with original nats-server
var trace bool
var debug bool
func LogSetup() {
log.SetFlags(0)
}
func (s *Server) LogInit() {
if s.opts.Logtime {
log.SetFlags(log.LstdFlags)
}
if s.opts.Trace {
Log(s.opts)
}
if s.opts.Debug {
debug = true
Log("DEBUG is on")
}
if s.opts.Trace {
trace = true
Log("TRACE is on")
}
}
func alreadyFormatted(s string) bool {
return strings.HasPrefix(s, "[")
}
func logStr(v []interface{}) string {
args := make([]string, 0, len(v))
for _, vt := range v {
switch t := vt.(type) {
case string:
if alreadyFormatted(t) {
args = append(args, t)
} else {
t = strings.Replace(t, "\"", "\\\"", -1)
args = append(args, fmt.Sprintf("\"%s\"", t))
}
default:
args = append(args, fmt.Sprintf("%+v", vt))
}
}
return fmt.Sprintf("[%s]", strings.Join(args,", "))
}
func Log(v ...interface{}) {
log.Print(logStr(v))
}
func Logf(format string, v ...interface{}) {
Log(fmt.Sprintf(format, v...))
}
func Fatal(v ...interface{}) {
log.Fatalf(logStr(v))
}
func Fatalf(format string, v ...interface{}) {
Fatal(fmt.Sprintf(format, v...))
}
func Debug(v ...interface{}) {
if debug {
Log(v...)
}
}
func DebugF(format string, v ...interface{}) {
if debug {
Debug(fmt.Sprintf(format, v...))
}
}
func Trace(v ...interface{}) {
if trace {
Log(v...)
}
}
func TraceF(format string, v ...interface{}) {
if trace {
Trace(fmt.Sprintf(format, v...))
}
}