func (l *Logger) Notice(v ...interface{}) {
	l.Log("NOTICE", v...)
}
Notice calls l.Log with severity set to NOTICE.

Arguments are handled in the manner of fmt.Print.
package run
import (
	"encoding/json"
	"fmt"
	"io"
	"net/http"
	"os"
	"runtime"
	"strconv"
	"strings"
	"sync"
)
var dl = &Logger{out: os.Stdout}
type LogEntry struct {
	Message        string                  `json:"message"`
	Severity       string                  `json:"severity,omitempty"`
	Component      string                  `json:"component,omitempty"`
	SourceLocation *LogEntrySourceLocation `json:"logging.googleapis.com/sourceLocation,omitempty"`
	Trace          string                  `json:"logging.googleapis.com/trace,omitempty"`
}
type LogEntrySourceLocation struct {
	File     string `json:"file,omitempty"`
	Function string `json:"function,omitempty"`
	Line     string `json:"line,omitempty"`
}
func (le LogEntry) String() string {
	if le.Severity == "" {
		le.Severity = "INFO"
	}
	data, err := json.Marshal(le)
	if err != nil {
		fmt.Printf("json.Marshal: %v", err)
	}
	return string(data)
}
type Logger struct {
	mu  sync.Mutex
	buf []byte
	out io.Writer
}
func Error(v ...interface{}) {
	dl.Log("ERROR", v...)
}
func Fatal(v ...interface{}) {
	dl.Log("ERROR", v...)
	os.Exit(1)
}
func Log(severity, s string) {
	dl.Log(severity, s)
}
func SetOutput(w io.Writer) {
	dl.mu.Lock()
	defer dl.mu.Unlock()
	dl.out = w
}
func Info(v ...interface{}) {
	dl.Log("INFO", v...)
}
func Notice(v ...interface{}) {
	dl.Log("NOTICE", v...)
}
func NewLogger() *Logger {
	return &Logger{out: os.Stdout}
}
func (l *Logger) SetOutput(w io.Writer) {
	l.mu.Lock()
	defer l.mu.Unlock()
	l.out = w
}
func (l *Logger) Info(v ...interface{}) {
	l.Log("INFO", v...)
}
func (l *Logger) Error(v ...interface{}) {
	l.Log("ERROR", v...)
}
func (l *Logger) Fatal(v ...interface{}) {
	l.Log("ERROR", v...)
	os.Exit(1)
}