logger

package module
v1.3.5 Latest Latest
Warning

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

Go to latest
Published: Dec 26, 2023 License: MIT Imports: 12 Imported by: 6

README

logger

该项目是一个基于go.uber.org/zap封装的日志框架,便于再开发中快速集成并且使用。

快速使用

  1. 不生成日志文件,使用console
import "github.com/illidaris/logger"
// 初始化日志管理器
logger.OnlyConsole()
// 打印日志
logger.Info("123")

日志样例如下:

2022-02-11T03:45:19.715Z	INFO	only_console/only_console.go:7	123
  1. 生成日志文件
import "github.com/illidaris/logger"
// 初始化日志管理器
logger.New(nil)
// 打印日志
logger.Info("123")

日志样例如下:

{"level":"INFO","datetime":"2022-02-11T03:43:36.048Z","caller":"simple/simple.go:7","message":"123"}

配置介绍

Config结构
type Config struct {
    StdLevel      string `toml:"std_level" json:"std_level"`     // Std Log level.
    StdFormat     string `toml:"std_format" json:"std_format"`   // Std Log format. one of json, text, or console.
    Level         string `toml:"level" json:"level"`             // Log level.
    Format        string `toml:"format" json:"format"`           // Log format. one of json, text, or console.
    FileDirectory string `toml:"file_dir" json:"file_dir"`       // File directory
    FileName      string `toml:"file_name" json:"file_name"`     // Log filename, leave empty to disable file log.
    MaxSize       int    `toml:"max_size" json:"max_size"`       // Max size for a single file, in MB.
    MaxDays       int    `toml:"max_days" json:"max_days"`       // Max log keep days, default is never deleting.
    MaxBackups    int    `toml:"max_backups" json:"max_backups"` // Maximum number of old log files to retain.
    Compress      bool   `toml:"compress" json:"compress"`       // Compress
    EncodeTime    func(time.Time, zapcore.PrimitiveArrayEncoder)
}
参数
  • StdLevel 终端中输出的日志内容的限制等级("error","warn","info","debug")
  • StdFormat 终端中输出的日志内容格式("console","json")
  • Level 日志内容的限制等级("error","warn","info","debug")
  • Format 日志内容格式("console","json")
  • FileDirectory 日志输出的文件目标目录
  • FileName 文件前缀名
  • EncodeTime 时间格式转化函数,默认采用格林威治时间,用于多地区时间统一
func(t time.Time, enc zapcore.PrimitiveArrayEncoder) {
    enc.AppendString(t.UTC().Format("2006-01-02T15:04:05.000Z"))
}

标记字段

目的是为了以后更好的分析日志处理日志,例如在ELK中分析日志,在标记加入session_idtrace_id等等, 方便追踪请求的执行链路,寻求更快的定位问题以及分析代码执行情况。一般我们可以划分横向与纵向两个维度:

  • 横向就是以session_id在请求入口植入,将整个请求链路从入口到执行处理到最后返回串联起来,一般采用周期性标记。
  • 纵向就是以action或者step为分段标记某几个执行函数,一般采用一次性标记。
一次性标记

用于当前日志记录的一次性标记,有效期仅仅再本次标记

package main

import (
	"github.com/illidaris/logger"
	"go.uber.org/zap"
)

func main(){
	logger.OnlyConsole()
	logger.Info("123",zap.String("tag1","tag_value"))
}

输出结果:

2022-02-11T06:19:30.114Z	INFO	tag_print_once/tag_print.go:10	123	{"tag1": "tag_value"}
周期性标记

借助于context.context来实现数据的上下文传递,在ctx的生命周期内,可以多次标记。

package main

import (
	"context"
	"github.com/illidaris/logger"
	"go.uber.org/zap"
)

func main(){
	logger.OnlyConsole()
	ctx:=context.Background()
	ctx=logger.NewContext(ctx,zap.String("tag","tag_value"))
	f1(ctx)
	f2(ctx)
	f3(ctx)
}
func f1(ctx context.Context)  {
	logger.InfoCtx(ctx,"f1 exec....")
}
func f2(ctx context.Context)  {
	logger.InfoCtx(ctx,"f2 exec....")
}
func f3(ctx context.Context)  {
	logger.InfoCtx(ctx,"f3 exec....")
}

输出结果:

2022-02-11T06:21:59.242Z	INFO	tag_print_context/tag_print_context.go:19	f1 exec....	{"tag": "tag_value"}
2022-02-11T06:21:59.242Z	INFO	tag_print_context/tag_print_context.go:23	f2 exec....	{"tag": "tag_value"}
2022-02-11T06:21:59.242Z	INFO	tag_print_context/tag_print_context.go:27	f3 exec....	{"tag": "tag_value"}

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func Debug

func Debug(msg string, fields ...zapcore.Field)

Debug *

  • @Description:
  • @param msg
Example
Debug("example")
Output:

func DebugCtx

func DebugCtx(ctx context.Context, msg string, fields ...zapcore.Field)

DebugCtx *

  • @Description:
  • @param ctx
  • @param msg
Example
DebugCtx(context.TODO(), "example")
Output:

func DefaultPrint added in v1.2.0

func DefaultPrint(msg string, fields ...zapcore.Field)

func Error

func Error(msg string, fields ...zapcore.Field)

Error *

  • @Description:
  • @param msg

func ErrorCtx

func ErrorCtx(ctx context.Context, msg string, fields ...zapcore.Field)

ErrorCtx *

  • @Description:
  • @param ctx
  • @param msg

func Fatal

func Fatal(msg string, fields ...zapcore.Field)

Fatal *

  • @Description:
  • @param msg

func FatalCtx

func FatalCtx(ctx context.Context, msg string, fields ...zapcore.Field)

FatalCtx *

  • @Description:
  • @param ctx
  • @param msg

func Info

func Info(msg string, fields ...zapcore.Field)

Info *

  • @Description:
  • @param msg

func InfoCtx

func InfoCtx(ctx context.Context, msg string, fields ...zapcore.Field)

InfoCtx *

  • @Description:
  • @param ctx
  • @param msg

func LogFrmCtx added in v1.2.0

func LogFrmCtx(ctx context.Context, level Level, msg string, fields ...zapcore.Field)

func New

func New(cfg *Config)

New create config, split with level

Example
New(nil)
Output:

func NewContext

func NewContext(ctx context.Context, fields ...zapcore.Field) context.Context

NewContext *

  • @Description:
  • @param ctx
  • @param fields
  • @return context.Context

func NewLogger

func NewLogger(exporters ...IExporter)

NewLogger build new logger

func NewOne added in v1.3.0

func NewOne(cfg *Config)

NewOne create config, split with only date

func OnlyConsole

func OnlyConsole()

OnlyConsole for test or develop

func Print

func Print(msg string, err error, fields ...zapcore.Field)

Print *

  • @Description:
  • @param ctx
  • @param msg

func PrintCtx

func PrintCtx(ctx context.Context, msg string, err error, fields ...zapcore.Field)

PrintCtx *

  • @Description:
  • @param ctx
  • @param msg

func Warn

func Warn(msg string, fields ...zapcore.Field)

Warn *

  • @Description:
  • @param msg

func WarnCtx

func WarnCtx(ctx context.Context, msg string, fields ...zapcore.Field)

WarnCtx *

  • @Description:
  • @param ctx
  • @param msg

func WithContext

func WithContext(ctx context.Context) *zap.Logger

WithContext *

  • @Description:
  • @param ctx
  • @return *zap.Logger

Types

type Config

type Config struct {
	StdLevel      string `toml:"std_level" json:"std_level"`     // Std Log level.
	StdFormat     string `toml:"std_format" json:"std_format"`   // Std Log format. one of json, text, or console.
	Level         string `toml:"level" json:"level"`             // Log level.
	Format        string `toml:"format" json:"format"`           // Log format. one of json, text, or console.
	FileDirectory string `toml:"file_dir" json:"file_dir"`       // File directory
	FileName      string `toml:"file_name" json:"file_name"`     // Log filename, leave empty to disable file log.
	MaxSize       int    `toml:"max_size" json:"max_size"`       // Max size for a single file, in MB.
	MaxDays       int    `toml:"max_days" json:"max_days"`       // Max log keep days, default is never deleting.
	MaxBackups    int    `toml:"max_backups" json:"max_backups"` // Maximum number of old log files to retain.
	Compress      bool   `toml:"compress" json:"compress"`       // Compress
	EncodeTime    func(time.Time, zapcore.PrimitiveArrayEncoder)
}

Config cfg logger

func (*Config) GetLevel

func (c *Config) GetLevel() *Level

GetLevel Get File Level

func (*Config) GetStdLevel

func (c *Config) GetStdLevel() *Level

GetStdLevel Get Std Level

type Fields

type Fields map[string]interface{}

func (Fields) ZapFields

func (f Fields) ZapFields() []zapcore.Field

type FileExporter

type FileExporter struct {
	zapcore.EncoderConfig
}

FileExporter std console exporter

func (*FileExporter) Encoder

func (e *FileExporter) Encoder() zapcore.Encoder

Encoder *

  • @Description:
  • @receiver e
  • @return zapcore.Encoder

func (*FileExporter) Level

func (e *FileExporter) Level() zapcore.LevelEnabler

Level *

  • @Description:
  • @receiver e
  • @return zapcore.Level

func (*FileExporter) Writer

func (e *FileExporter) Writer() zapcore.WriteSyncer

Writer *

  • @Description:
  • @receiver e
  • @return zapcore.WriteSyncer

type IExporter

type IExporter interface {
	Encoder() zapcore.Encoder
	Writer() zapcore.WriteSyncer
	Level() zapcore.LevelEnabler
}

func NewExporters

func NewExporters(cfg *Config) []IExporter

func NewLevelExporters added in v1.3.0

func NewLevelExporters(cfg *Config) []IExporter

type Key

type Key string

Key context logger core

const (
	CtxLogger Key = "_CtxLogger"
)

type Level

type Level int8

Level is a logging priority. Higher levels are more important.

const (
	DebugLevel Level = iota - 1
	InfoLevel
	WarnLevel
	ErrorLevel
	FatalLevel // Critical exists only for config backward compatibility.
)

Logging levels.

func (Level) CtxPrintf

func (l Level) CtxPrintf(ctx context.Context, format string, a ...interface{})

CtxPrintf *

  • @Description:
  • @receiver l

func (Level) CtxPrintln

func (l Level) CtxPrintln(ctx context.Context, a ...interface{})

CtxPrintln *

  • @Description:
  • @receiver l

func (Level) Print

func (l Level) Print(msg string)

Print *

  • @Description:
  • @receiver l

func (Level) PrintCtx

func (l Level) PrintCtx(ctx context.Context, msg string)

PrintCtx *

  • @Description:
  • @receiver l

func (Level) Printf

func (l Level) Printf(format string, a ...interface{})

Printf *

  • @Description:
  • @receiver l

func (Level) Println

func (l Level) Println(a ...interface{})

Println *

  • @Description:
  • @receiver l

func (Level) String

func (l Level) String() string

String returns the name of the logging level.

func (Level) Unabled

func (l Level) Unabled(level Level) bool

Unabled returns true if given level is enabled.

func (*Level) Unpack

func (l *Level) Unpack(str string) error

Unpack unmarshals a level string to a Level. This implements ucfg.StringUnpacker.

type LevelFileExporter added in v1.3.0

type LevelFileExporter struct {
	zapcore.EncoderConfig
	// contains filtered or unexported fields
}

LevelFileExporter file console exporter

func NewLevelFileExporter added in v1.3.0

func NewLevelFileExporter(level zapcore.Level, cfg *Config) *LevelFileExporter

func (*LevelFileExporter) Enabled added in v1.3.0

func (e *LevelFileExporter) Enabled(lvl zapcore.Level) bool

Enabled level enable

func (*LevelFileExporter) Encoder added in v1.3.0

func (e *LevelFileExporter) Encoder() zapcore.Encoder

Encoder *

  • @Description:
  • @receiver e
  • @return zapcore.Encoder

func (*LevelFileExporter) Level added in v1.3.0

Level *

  • @Description:
  • @receiver e
  • @return zapcore.Level

func (*LevelFileExporter) Writer added in v1.3.0

Writer *

  • @Description:
  • @receiver e
  • @return zapcore.WriteSyncer

type Logger

type Logger struct {
	FieldMap Fields
}

Logger this wrap instead of "logrus"

func (*Logger) Debug

func (logger *Logger) Debug(args ...interface{})

func (*Logger) DebugCtxf

func (logger *Logger) DebugCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Debugf

func (logger *Logger) Debugf(format string, args ...interface{})

func (*Logger) Debugln

func (logger *Logger) Debugln(args ...interface{})

func (*Logger) Error

func (logger *Logger) Error(args ...interface{})

func (*Logger) ErrorCtxf

func (logger *Logger) ErrorCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Errorf

func (logger *Logger) Errorf(format string, args ...interface{})

func (*Logger) Errorln

func (logger *Logger) Errorln(args ...interface{})

func (*Logger) Fatal

func (logger *Logger) Fatal(args ...interface{})

func (*Logger) FatalCtxf

func (logger *Logger) FatalCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Fatalf

func (logger *Logger) Fatalf(format string, args ...interface{})

func (*Logger) Fatalln

func (logger *Logger) Fatalln(args ...interface{})

func (*Logger) Info

func (logger *Logger) Info(args ...interface{})

func (*Logger) InfoCtxf

func (logger *Logger) InfoCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Infof

func (logger *Logger) Infof(format string, args ...interface{})

func (*Logger) Infoln

func (logger *Logger) Infoln(args ...interface{})

func (*Logger) Log

func (logger *Logger) Log(level Level, args ...interface{})

func (*Logger) LogCtxf

func (logger *Logger) LogCtxf(ctx context.Context, level Level, format string, args ...interface{})

func (*Logger) Logf

func (logger *Logger) Logf(level Level, format string, args ...interface{})

func (*Logger) Logln

func (logger *Logger) Logln(level Level, args ...interface{})

func (*Logger) Panic

func (logger *Logger) Panic(args ...interface{})

func (*Logger) PanicCtxf

func (logger *Logger) PanicCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Panicf

func (logger *Logger) Panicf(format string, args ...interface{})

func (*Logger) Panicln

func (logger *Logger) Panicln(args ...interface{})

func (*Logger) Print

func (logger *Logger) Print(args ...interface{})

func (*Logger) PrintCtxf

func (logger *Logger) PrintCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Printf

func (logger *Logger) Printf(format string, args ...interface{})

func (*Logger) Println

func (logger *Logger) Println(args ...interface{})

func (*Logger) Trace

func (logger *Logger) Trace(args ...interface{})

func (*Logger) TraceCtxf

func (logger *Logger) TraceCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Tracef

func (logger *Logger) Tracef(format string, args ...interface{})

func (*Logger) Traceln

func (logger *Logger) Traceln(args ...interface{})

func (*Logger) Warn

func (logger *Logger) Warn(args ...interface{})

func (*Logger) WarnCtxf

func (logger *Logger) WarnCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Warnf

func (logger *Logger) Warnf(format string, args ...interface{})

func (*Logger) Warning

func (logger *Logger) Warning(args ...interface{})

func (*Logger) WarningCtxf

func (logger *Logger) WarningCtxf(ctx context.Context, format string, args ...interface{})

func (*Logger) Warningf

func (logger *Logger) Warningf(format string, args ...interface{})

func (*Logger) Warningln

func (logger *Logger) Warningln(args ...interface{})

func (*Logger) Warnln

func (logger *Logger) Warnln(args ...interface{})

func (*Logger) WithField

func (logger *Logger) WithField(key string, value interface{}) *Logger

func (*Logger) WithFields

func (logger *Logger) WithFields(fields Fields) *Logger

type StdExporter

type StdExporter struct {
	zapcore.EncoderConfig
}

StdExporter std console exporter

func (*StdExporter) Encoder

func (e *StdExporter) Encoder() zapcore.Encoder

Encoder *

  • @Description:
  • @receiver e
  • @return zapcore.Encoder

func (*StdExporter) Level

func (e *StdExporter) Level() zapcore.LevelEnabler

Level *

  • @Description:
  • @receiver e
  • @return zapcore.Level

func (*StdExporter) Writer

func (e *StdExporter) Writer() zapcore.WriteSyncer

Writer *

  • @Description:
  • @receiver e
  • @return zapcore.WriteSyncer

Directories

Path Synopsis
_examples

Jump to

Keyboard shortcuts

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