mirror of
https://github.com/mmatczuk/go-http-tunnel.git
synced 2026-05-15 14:16:17 -06:00
log: NewLogger moved to log package
This commit is contained in:
parent
342b0b5f81
commit
15d593924b
5 changed files with 80 additions and 83 deletions
|
|
@ -1,41 +0,0 @@
|
|||
// Copyright (C) 2017 Michał Matczuk
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"io"
|
||||
golog "log"
|
||||
"os"
|
||||
|
||||
"github.com/mmatczuk/go-http-tunnel/log"
|
||||
)
|
||||
|
||||
// NewLogger returns logfmt based logger, printing messages up to log level
|
||||
// logLevel.
|
||||
func NewLogger(to string, level int) (log.Logger, error) {
|
||||
var w io.Writer
|
||||
|
||||
switch to {
|
||||
case "none":
|
||||
return log.NewNopLogger(), nil
|
||||
case "stdout":
|
||||
w = os.Stdout
|
||||
case "stderr":
|
||||
w = os.Stderr
|
||||
default:
|
||||
f, err := os.Create(to)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
w = f
|
||||
}
|
||||
|
||||
golog.SetOutput(w)
|
||||
|
||||
var logger log.Logger
|
||||
logger = log.NewStdLogger()
|
||||
logger = log.NewFilterLogger(logger, level)
|
||||
return logger, nil
|
||||
}
|
||||
|
|
@ -16,7 +16,6 @@ import (
|
|||
|
||||
"github.com/cenkalti/backoff"
|
||||
"github.com/mmatczuk/go-http-tunnel"
|
||||
"github.com/mmatczuk/go-http-tunnel/cmd/cmd"
|
||||
"github.com/mmatczuk/go-http-tunnel/id"
|
||||
"github.com/mmatczuk/go-http-tunnel/log"
|
||||
"github.com/mmatczuk/go-http-tunnel/proto"
|
||||
|
|
@ -33,7 +32,7 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
logger, err := cmd.NewLogger(opts.logTo, opts.logLevel)
|
||||
logger, err := log.NewLogger(opts.logTo, opts.logLevel)
|
||||
if err != nil {
|
||||
fatal("failed to init logger: %s", err)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,8 +14,8 @@ import (
|
|||
"golang.org/x/net/http2"
|
||||
|
||||
"github.com/mmatczuk/go-http-tunnel"
|
||||
"github.com/mmatczuk/go-http-tunnel/cmd/cmd"
|
||||
"github.com/mmatczuk/go-http-tunnel/id"
|
||||
"github.com/mmatczuk/go-http-tunnel/log"
|
||||
)
|
||||
|
||||
func main() {
|
||||
|
|
@ -26,7 +26,7 @@ func main() {
|
|||
return
|
||||
}
|
||||
|
||||
logger, err := cmd.NewLogger(opts.logTo, opts.logLevel)
|
||||
logger, err := log.NewLogger(opts.logTo, opts.logLevel)
|
||||
if err != nil {
|
||||
fatal("failed to init logger: %s", err)
|
||||
}
|
||||
|
|
|
|||
49
log/context.go
Normal file
49
log/context.go
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
// Copyright (C) 2017 Michał Matczuk
|
||||
// Use of this source code is governed by a BSD-style
|
||||
// license that can be found in the LICENSE file.
|
||||
|
||||
package log
|
||||
|
||||
// Context is simplified version of go-kit log Context
|
||||
// https://godoc.org/github.com/go-kit/kit/log#Context.
|
||||
type Context struct {
|
||||
prefix []interface{}
|
||||
suffix []interface{}
|
||||
logger Logger
|
||||
}
|
||||
|
||||
// NewContext returns a logger that adds prefix before keyvals.
|
||||
func NewContext(logger Logger) *Context {
|
||||
return &Context{
|
||||
prefix: make([]interface{}, 0),
|
||||
suffix: make([]interface{}, 0),
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// With returns a new Context with keyvals appended to those of the receiver.
|
||||
func (c *Context) With(keyvals ...interface{}) *Context {
|
||||
return &Context{
|
||||
prefix: c.prefix,
|
||||
suffix: append(c.suffix, keyvals...),
|
||||
logger: c.logger,
|
||||
}
|
||||
}
|
||||
|
||||
// WithPrefix returns a new Context with keyvals prepended to those of the
|
||||
// receiver.
|
||||
func (c *Context) WithPrefix(keyvals ...interface{}) *Context {
|
||||
return &Context{
|
||||
prefix: append(c.prefix, keyvals...),
|
||||
suffix: c.suffix,
|
||||
logger: c.logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Log adds prefix and suffix to keyvals and calls internal logger.
|
||||
func (c *Context) Log(keyvals ...interface{}) error {
|
||||
var s []interface{}
|
||||
s = append(c.prefix, keyvals...)
|
||||
s = append(s, c.suffix...)
|
||||
return c.logger.Log(s...)
|
||||
}
|
||||
66
log/log.go
66
log/log.go
|
|
@ -4,6 +4,12 @@
|
|||
|
||||
package log
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
"os"
|
||||
)
|
||||
|
||||
// Logger is the fundamental interface for all log operations. Log creates a
|
||||
// log event from keyvals, a variadic sequence of alternating keys and values.
|
||||
// Implementations must be safe for concurrent use by multiple goroutines. In
|
||||
|
|
@ -13,46 +19,30 @@ type Logger interface {
|
|||
Log(keyvals ...interface{}) error
|
||||
}
|
||||
|
||||
// Context is simplified version of go-kit log Context
|
||||
// https://godoc.org/github.com/go-kit/kit/log#Context.
|
||||
type Context struct {
|
||||
prefix []interface{}
|
||||
suffix []interface{}
|
||||
logger Logger
|
||||
}
|
||||
// NewLogger returns logfmt based logger, printing messages up to log level
|
||||
// logLevel.
|
||||
func NewLogger(to string, level int) (Logger, error) {
|
||||
var w io.Writer
|
||||
|
||||
// NewContext returns a logger that adds prefix before keyvals.
|
||||
func NewContext(logger Logger) *Context {
|
||||
return &Context{
|
||||
prefix: make([]interface{}, 0),
|
||||
suffix: make([]interface{}, 0),
|
||||
logger: logger,
|
||||
switch to {
|
||||
case "none":
|
||||
return NewNopLogger(), nil
|
||||
case "stdout":
|
||||
w = os.Stdout
|
||||
case "stderr":
|
||||
w = os.Stderr
|
||||
default:
|
||||
f, err := os.Create(to)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
w = f
|
||||
}
|
||||
}
|
||||
|
||||
// With returns a new Context with keyvals appended to those of the receiver.
|
||||
func (c *Context) With(keyvals ...interface{}) *Context {
|
||||
return &Context{
|
||||
prefix: c.prefix,
|
||||
suffix: append(c.suffix, keyvals...),
|
||||
logger: c.logger,
|
||||
}
|
||||
}
|
||||
log.SetOutput(w)
|
||||
|
||||
// WithPrefix returns a new Context with keyvals prepended to those of the
|
||||
// receiver.
|
||||
func (c *Context) WithPrefix(keyvals ...interface{}) *Context {
|
||||
return &Context{
|
||||
prefix: append(c.prefix, keyvals...),
|
||||
suffix: c.suffix,
|
||||
logger: c.logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Log adds prefix and suffix to keyvals and calls internal logger.
|
||||
func (c *Context) Log(keyvals ...interface{}) error {
|
||||
var s []interface{}
|
||||
s = append(c.prefix, keyvals...)
|
||||
s = append(s, c.suffix...)
|
||||
return c.logger.Log(s...)
|
||||
var l Logger
|
||||
l = NewStdLogger()
|
||||
l = NewFilterLogger(l, level)
|
||||
return l, nil
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue