zaplogger

package module
v0.0.0-...-751e635 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 27, 2020 License: MIT Imports: 4 Imported by: 0

README

stackdriver-zaplogger

stackdriver-zaplogger is a zap logger interface for stackdriver.
cicleci license goversion

How to install

go get -u github.com/yanolab/stackdriver-zaplogger

How to use

For example, Output to both console and stackdriver:

package main

import (
	"log"
	"os"

	"cloud.google.com/go/logging"
	zaplogger "github.com/yanolab/stackdriver-zaplogger"
	"go.uber.org/zap"
	"go.uber.org/zap/zapcore"
	"golang.org/x/net/context"
)

func main() {
	ctx := context.Background()

	projectID := os.Getenv("PROJECT_ID")
	cli, err := logging.NewClient(ctx, projectID)
	if err != nil {
		log.Fatalf("Failed to create client: %v", err)
	}
	defer cli.Close()

	root, err := newStackdriverZapLogger(zap.DebugLevel, projectID, cli)
	if err != nil {
		log.Fatal(err)
	}

	root.Info("start logging", zap.String("PackageName", "stackdriver-zaplogger"))

	logger := zaplogger.NewLogger(root, "testlogger")
	logger.Debug("created a new logger", zap.String("ProjectID", projectID))
}

func newStackdriverZapLogger(level zapcore.Level, projectID string, cli *logging.Client) (*zap.Logger, error) {
	config := zap.NewDevelopmentConfig()
	config.EncoderConfig = zaplogger.EncoderConfig
	config.Sampling = nil
	config.Level = zap.NewAtomicLevelAt(level)

	return config.Build(zap.WrapCore(func(core zapcore.Core) zapcore.Core {
		return zapcore.NewTee(core, zaplogger.NewCore(cli, config.Level))
	}))
}

Documentation

Index

Constants

This section is empty.

Variables

View Source
var EncoderConfig = zapcore.EncoderConfig{
	TimeKey:        "eventTime",
	LevelKey:       "severity",
	NameKey:        "logger",
	CallerKey:      "caller",
	MessageKey:     "message",
	StacktraceKey:  "stacktrace",
	LineEnding:     zapcore.DefaultLineEnding,
	EncodeLevel:    encodeLevel,
	EncodeTime:     zapcore.ISO8601TimeEncoder,
	EncodeDuration: zapcore.SecondsDurationEncoder,
	EncodeCaller:   zapcore.ShortCallerEncoder,
}

EncoderConfig is default encode config for stack driver.

Functions

func NewLogger

func NewLogger(root *zap.Logger, name string) *zap.Logger

NewLogger creates a new zap.Logger based on root logger.

Types

type Core

type Core struct {
	zapcore.LevelEnabler
	// contains filtered or unexported fields
}

Core is a stack driver core.

func NewCore

func NewCore(cli *logging.Client, lv zapcore.LevelEnabler) *Core

NewCore creates a new Core instance.

func (*Core) Check

func (c *Core) Check(entry zapcore.Entry, ce *zapcore.CheckedEntry) *zapcore.CheckedEntry

Check checks log level.

func (*Core) Sync

func (c *Core) Sync() error

Sync syncs stack driver logger.

func (*Core) With

func (c *Core) With(fields []zapcore.Field) zapcore.Core

With recreates a new Core with given fields.

func (*Core) Write

func (c *Core) Write(entry zapcore.Entry, fields []zapcore.Field) error

Write writes zap entry and fields to stackdrvier.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL