Skip to content

Commit

Permalink
Add Severity and VerboseLevel to grpclog. (#922)
Browse files Browse the repository at this point in the history
* Add Severity and VerboseLevel to grpclog.

* keep old interface and add loggerv2

* export NewLoggerv2
  • Loading branch information
menghanl committed Jun 19, 2017
1 parent ea14354 commit 2887f94
Show file tree
Hide file tree
Showing 6 changed files with 467 additions and 51 deletions.
57 changes: 42 additions & 15 deletions grpclog/glogger/glogger.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,41 +17,68 @@
*/

// Package glogger defines glog-based logging for grpc.
// Importing this package will install glog as the logger used by grpclog.
package glogger

import (
"fmt"

"github.com/golang/glog"
"google.golang.org/grpc/grpclog"
)

func init() {
grpclog.SetLogger(&glogger{})
grpclog.SetLoggerV2(&glogger{})
}

type glogger struct{}

func (g *glogger) Fatal(args ...interface{}) {
glog.FatalDepth(2, args...)
func (g *glogger) Info(args ...interface{}) {
glog.Info(args...)
}

func (g *glogger) Fatalf(format string, args ...interface{}) {
glog.FatalDepth(2, fmt.Sprintf(format, args...))
func (g *glogger) Infoln(args ...interface{}) {
glog.Infoln(args...)
}

func (g *glogger) Fatalln(args ...interface{}) {
glog.FatalDepth(2, fmt.Sprintln(args...))
func (g *glogger) Infof(format string, args ...interface{}) {
glog.Infof(format, args...)
}

func (g *glogger) Warning(args ...interface{}) {
glog.Warning(args...)
}

func (g *glogger) Print(args ...interface{}) {
glog.InfoDepth(2, args...)
func (g *glogger) Warningln(args ...interface{}) {
glog.Warningln(args...)
}

func (g *glogger) Printf(format string, args ...interface{}) {
glog.InfoDepth(2, fmt.Sprintf(format, args...))
func (g *glogger) Warningf(format string, args ...interface{}) {
glog.Warningf(format, args...)
}

func (g *glogger) Error(args ...interface{}) {
glog.Error(args...)
}

func (g *glogger) Errorln(args ...interface{}) {
glog.Errorln(args...)
}

func (g *glogger) Errorf(format string, args ...interface{}) {
glog.Errorf(format, args...)
}

func (g *glogger) Fatal(args ...interface{}) {
glog.Fatal(args...)
}

func (g *glogger) Fatalln(args ...interface{}) {
glog.Fatalln(args...)
}

func (g *glogger) Fatalf(format string, args ...interface{}) {
glog.Fatalf(format, args...)
}

func (g *glogger) Println(args ...interface{}) {
glog.InfoDepth(2, fmt.Sprintln(args...))
func (g *glogger) V(l int) bool {
return bool(glog.V(glog.Level(l)))
}
127 changes: 127 additions & 0 deletions grpclog/grpclog.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
/*
*
* Copyright 2017, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*/

package grpclog

import "os"

var logger = newLoggerV2()

// V reports whether verbosity level l is at least the requested verbose level.
func V(l int) bool {
return logger.V(l)
}

// Info logs to the INFO log.
func Info(args ...interface{}) {
logger.Info(args...)
}

// Infof logs to the INFO log. Arguments are handled in the manner of fmt.Printf.
func Infof(format string, args ...interface{}) {
logger.Infof(format, args...)
}

// Infoln logs to the INFO log. Arguments are handled in the manner of fmt.Println.
func Infoln(args ...interface{}) {
logger.Infoln(args...)
}

// Warning logs to the WARNING log.
func Warning(args ...interface{}) {
logger.Warning(args...)
}

// Warningf logs to the WARNING log. Arguments are handled in the manner of fmt.Printf.
func Warningf(format string, args ...interface{}) {
logger.Warningf(format, args...)
}

// Warningln logs to the WARNING log. Arguments are handled in the manner of fmt.Println.
func Warningln(args ...interface{}) {
logger.Warningln(args...)
}

// Error logs to the ERROR log.
func Error(args ...interface{}) {
logger.Error(args...)
}

// Errorf logs to the ERROR log. Arguments are handled in the manner of fmt.Printf.
func Errorf(format string, args ...interface{}) {
logger.Errorf(format, args...)
}

// Errorln logs to the ERROR log. Arguments are handled in the manner of fmt.Println.
func Errorln(args ...interface{}) {
logger.Errorln(args...)
}

// Fatal logs to the FATAL log. Arguments are handled in the manner of fmt.Print.
// It calls os.Exit() with exit code 1.
func Fatal(args ...interface{}) {
logger.Fatal(args...)
os.Exit(1)
}

// Fatalf logs to the FATAL log. Arguments are handled in the manner of fmt.Printf.
// It calles os.Exit() with exit code 1.
func Fatalf(format string, args ...interface{}) {
logger.Fatalf(format, args...)
os.Exit(1)
}

// Fatalln logs to the FATAL log. Arguments are handled in the manner of fmt.Println.
// It calle os.Exit()) with exit code 1.
func Fatalln(args ...interface{}) {
logger.Fatalln(args...)
os.Exit(1)
}

// Print prints to the logger. Arguments are handled in the manner of fmt.Print.
// Deprecated: use Info.
func Print(args ...interface{}) {
logger.Info(args...)
}

// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.
// Deprecated: use Infof.
func Printf(format string, args ...interface{}) {
logger.Infof(format, args...)
}

// Println prints to the logger. Arguments are handled in the manner of fmt.Println.
// Deprecated: use Infoln.
func Println(args ...interface{}) {
logger.Infoln(args...)
}
66 changes: 37 additions & 29 deletions grpclog/logger.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,17 +19,8 @@
// Package grpclog defines logging for grpc.
package grpclog // import "google.golang.org/grpc/grpclog"

import (
"log"
"os"
)

// Use golang's standard logger by default.
// Access is not mutex-protected: do not modify except in init()
// functions.
var logger Logger = log.New(os.Stderr, "", log.LstdFlags)

// Logger mimics golang's standard Logger as an interface.
// Deprecated: use LoggerV2.
type Logger interface {
Fatal(args ...interface{})
Fatalf(format string, args ...interface{})
Expand All @@ -41,36 +32,53 @@ type Logger interface {

// SetLogger sets the logger that is used in grpc. Call only from
// init() functions.
// Deprecated: use SetLoggerV2.
func SetLogger(l Logger) {
logger = l
logger = &loggerWrapper{Logger: l}
}

// loggerWrapper wraps Logger into a LoggerV2.
type loggerWrapper struct {
Logger
}

func (g *loggerWrapper) Info(args ...interface{}) {
g.Logger.Print(args...)
}

func (g *loggerWrapper) Infoln(args ...interface{}) {
g.Logger.Println(args...)
}

func (g *loggerWrapper) Infof(format string, args ...interface{}) {
g.Logger.Printf(format, args...)
}

func (g *loggerWrapper) Warning(args ...interface{}) {
g.Logger.Print(args...)
}

// Fatal is equivalent to Print() followed by a call to os.Exit() with a non-zero exit code.
func Fatal(args ...interface{}) {
logger.Fatal(args...)
func (g *loggerWrapper) Warningln(args ...interface{}) {
g.Logger.Println(args...)
}

// Fatalf is equivalent to Printf() followed by a call to os.Exit() with a non-zero exit code.
func Fatalf(format string, args ...interface{}) {
logger.Fatalf(format, args...)
func (g *loggerWrapper) Warningf(format string, args ...interface{}) {
g.Logger.Printf(format, args...)
}

// Fatalln is equivalent to Println() followed by a call to os.Exit()) with a non-zero exit code.
func Fatalln(args ...interface{}) {
logger.Fatalln(args...)
func (g *loggerWrapper) Error(args ...interface{}) {
g.Logger.Print(args...)
}

// Print prints to the logger. Arguments are handled in the manner of fmt.Print.
func Print(args ...interface{}) {
logger.Print(args...)
func (g *loggerWrapper) Errorln(args ...interface{}) {
g.Logger.Println(args...)
}

// Printf prints to the logger. Arguments are handled in the manner of fmt.Printf.
func Printf(format string, args ...interface{}) {
logger.Printf(format, args...)
func (g *loggerWrapper) Errorf(format string, args ...interface{}) {
g.Logger.Printf(format, args...)
}

// Println prints to the logger. Arguments are handled in the manner of fmt.Println.
func Println(args ...interface{}) {
logger.Println(args...)
func (g *loggerWrapper) V(l int) bool {
// Returns true for all verbose level.
return true
}
Loading

0 comments on commit 2887f94

Please sign in to comment.