diff options
Diffstat (limited to 'vendor/google.golang.org/appengine/internal/log_vm.go')
-rw-r--r-- | vendor/google.golang.org/appengine/internal/log_vm.go | 109 |
1 files changed, 0 insertions, 109 deletions
diff --git a/vendor/google.golang.org/appengine/internal/log_vm.go b/vendor/google.golang.org/appengine/internal/log_vm.go deleted file mode 100644 index 1e7c9f2..0000000 --- a/vendor/google.golang.org/appengine/internal/log_vm.go +++ /dev/null @@ -1,109 +0,0 @@ -// Copyright 2016 Google Inc. All rights reserved. -// Use of this source code is governed by the Apache 2.0 -// license that can be found in the LICENSE file. - -// +build !appengine - -package internal - -import ( - "encoding/json" - "fmt" - "io" - "io/ioutil" - "log" - "os" - "strings" - "sync" - "time" -) - -// jsonLogger writes logs in the JSON format required for Flex Logging. It can -// be used concurrently. -type jsonLogger struct { - mu sync.Mutex - enc *json.Encoder -} - -type logLine struct { - Message string `json:"message"` - Timestamp logTimestamp `json:"timestamp"` - Severity string `json:"severity"` - TraceID string `json:"traceId,omitempty"` -} - -type logTimestamp struct { - Seconds int64 `json:"seconds"` - Nanos int `json:"nanos"` -} - -var ( - logger *jsonLogger - loggerOnce sync.Once - - logPath = "/var/log/app_engine/app.json" - stderrLogger = newJSONLogger(os.Stderr) - testLogger = newJSONLogger(ioutil.Discard) - - levels = map[int64]string{ - 0: "DEBUG", - 1: "INFO", - 2: "WARNING", - 3: "ERROR", - 4: "CRITICAL", - } -) - -func globalLogger() *jsonLogger { - loggerOnce.Do(func() { - f, err := os.OpenFile(logPath, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0666) - if err != nil { - log.Printf("failed to open/create log file, logging to stderr: %v", err) - logger = stderrLogger - return - } - - logger = newJSONLogger(f) - }) - - return logger -} - -func logf(ctx *context, level int64, format string, args ...interface{}) { - s := strings.TrimSpace(fmt.Sprintf(format, args...)) - now := time.Now() - - trace := ctx.req.Header.Get(traceHeader) - if i := strings.Index(trace, "/"); i > -1 { - trace = trace[:i] - } - - line := &logLine{ - Message: s, - Timestamp: logTimestamp{ - Seconds: now.Unix(), - Nanos: now.Nanosecond(), - }, - Severity: levels[level], - TraceID: trace, - } - - if err := ctx.logger.emit(line); err != nil { - log.Printf("failed to write log line to file: %v", err) - } - - log.Print(levels[level] + ": " + s) -} - -func newJSONLogger(w io.Writer) *jsonLogger { - return &jsonLogger{ - enc: json.NewEncoder(w), - } -} - -func (l *jsonLogger) emit(line *logLine) error { - l.mu.Lock() - defer l.mu.Unlock() - - return l.enc.Encode(line) -} |