File: log.go

package info (click to toggle)
golang-github-graph-gophers-graphql-go 1.7.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 1,452 kB
  • sloc: sh: 373; javascript: 21; makefile: 5
file content (31 lines) | stat: -rw-r--r-- 997 bytes parent folder | download
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
package log

import (
	"context"
	"log"
	"runtime"
)

// Logger is the interface used to log panics that occur during query execution. It is settable via graphql.ParseSchema.
type Logger interface {
	LogPanic(ctx context.Context, value interface{})
}

// LoggerFunc is a function type that implements the Logger interface.
type LoggerFunc func(ctx context.Context, value interface{})

// LogPanic calls the LoggerFunc with the given context and panic value.
func (f LoggerFunc) LogPanic(ctx context.Context, value interface{}) {
	f(ctx, value)
}

// DefaultLogger is the default logger used to log panics that occur during query execution.
type DefaultLogger struct{}

// LogPanic is used to log recovered panic values that occur during query execution.
func (l *DefaultLogger) LogPanic(ctx context.Context, value interface{}) {
	const size = 64 << 10
	buf := make([]byte, size)
	buf = buf[:runtime.Stack(buf, false)]
	log.Printf("graphql: panic occurred: %v\n%s\ncontext: %v", value, buf, ctx)
}