func OutputText(ctx context.Context, severity, format string, a ...interface{}) {
	log.Printf(severity+": "+format, a...)
}
OutputText outputs log using standard log package.
package aelog
import (
	"context"
	"encoding/json"
	"fmt"
	"log"
	"os"
	"sync"
	"github.com/DeNA/aelog/internal/spancontext"
)
type logger struct {
	mu  sync.Mutex
	out func(context.Context, string, string, ...interface{})
}
func (l *logger) output(ctx context.Context, severity, format string, a ...interface{}) {
	l.mu.Lock()
	defer l.mu.Unlock()
	l.out(ctx, severity, format, a...)
}
func SetOutput(f func(context.Context, string, string, ...interface{})) {
	std.mu.Lock()
	defer std.mu.Unlock()
	std.out = f
}
var std = &logger{out: OutputJSON}
func Debugf(ctx context.Context, format string, a ...interface{}) {
	std.output(ctx, "DEBUG", format, a...)
}
func Infof(ctx context.Context, format string, a ...interface{}) {
	std.output(ctx, "INFO", format, a...)
}
func Warningf(ctx context.Context, format string, a ...interface{}) {
	std.output(ctx, "WARNING", format, a...)
}
func Errorf(ctx context.Context, format string, a ...interface{}) {
	std.output(ctx, "ERROR", format, a...)
}
func Criticalf(ctx context.Context, format string, a ...interface{}) {
	std.output(ctx, "CRITICAL", format, a...)
}
func OutputJSON(ctx context.Context, severity, format string, a ...interface{}) {
	sc := spancontext.Get(ctx)
	payload := &struct {
		Severity string `json:"severity"`
		Message  string `json:"message"`
		Trace    string `json:"logging.googleapis.com/trace"`
		SpanID   string `json:"logging.googleapis.com/spanId"`
	}{
		Severity: severity,
		Message:  fmt.Sprintf(format, a...),
		Trace:    fmt.Sprintf("projects/%s/traces/%s", os.Getenv("GOOGLE_CLOUD_PROJECT"), sc.TraceID),
		SpanID:   sc.SpanID,
	}
	json.NewEncoder(os.Stdout).Encode(payload)
}