log

package module
v0.0.0-...-355dc4f Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2024 License: MulanPSL-2.0 Imports: 20 Imported by: 0

Documentation

Index

Constants

View Source
const (
	KeyRequestID string = "requestID"
	KeyUsername  string = "username"
	KeyUserID    string = "userid"
)

Defines common log fields.

Variables

View Source
var (
	// DebugLevel logs are typically voluminous, and are usually disabled in
	// production.
	DebugLevel = zapcore.DebugLevel
	// InfoLevel is the default logging priority.
	InfoLevel = zapcore.InfoLevel
	// WarnLevel logs are more important than Info, but don't need individual
	// human review.
	WarnLevel = zapcore.WarnLevel
	// ErrorLevel logs are high-priority. If an application is running smoothly,
	// it shouldn't generate any error-level logs.
	ErrorLevel = zapcore.ErrorLevel
	// PanicLevel logs a message, then panics.
	PanicLevel = zapcore.PanicLevel
	// FatalLevel logs a message, then calls os.Exit(1).
	FatalLevel = zapcore.FatalLevel
)
View Source
var (
	Any         = zap.Any
	Array       = zap.Array
	Object      = zap.Object
	Binary      = zap.Binary
	Bool        = zap.Bool
	Bools       = zap.Bools
	ByteString  = zap.ByteString
	ByteStrings = zap.ByteStrings
	Complex64   = zap.Complex64
	Complex64s  = zap.Complex64s
	Complex128  = zap.Complex128
	Complex128s = zap.Complex128s
	Duration    = zap.Duration
	Durations   = zap.Durations
	Err         = zap.Error
	Errors      = zap.Errors
	Float32     = zap.Float32
	Float32s    = zap.Float32s
	Float64     = zap.Float64
	Float64s    = zap.Float64s
	Int         = zap.Int
	Ints        = zap.Ints
	Int8        = zap.Int8
	Int8s       = zap.Int8s
	Int16       = zap.Int16
	Int16s      = zap.Int16s
	Int32       = zap.Int32
	Int32s      = zap.Int32s
	Int64       = zap.Int64
	Int64s      = zap.Int64s
	Namespace   = zap.Namespace
	Reflect     = zap.Reflect
	Stack       = zap.Stack
	String      = zap.String
	Stringer    = zap.Stringer
	Strings     = zap.Strings
	Time        = zap.Time
	Times       = zap.Times
	Uint        = zap.Uint
	Uints       = zap.Uints
	Uint8       = zap.Uint8
	Uint8s      = zap.Uint8s
	Uint16      = zap.Uint16
	Uint16s     = zap.Uint16s
	Uint32      = zap.Uint32
	Uint32s     = zap.Uint32s
	Uint64      = zap.Uint64
	Uint64s     = zap.Uint64s
	Uintptr     = zap.Uintptr
	Uintptrs    = zap.Uintptrs
)

Alias for zap type functions.

Functions

func CheckIntLevel

func CheckIntLevel(level int32) bool

CheckIntLevel used for other log wrapper such as klog which return if logging a message at the specified level is enabled.

func Debug

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

Debug method output debug level log.

func DebugC

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

DebugC method output debug level log.

func Debugf

func Debugf(format string, v ...interface{})

Debugf method output debug level log.

func DebugfC

func DebugfC(ctx context.Context, format string, v ...interface{})

DebugfC method output debug level log.

func Debugw

func Debugw(msg string, keysAndValues ...interface{})

Debugw method output debug level log.

func DebugwC

func DebugwC(ctx context.Context, msg string, keysAndValues ...interface{})

func Error

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

Error method output error level log.

func ErrorC

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

func Errorf

func Errorf(format string, v ...interface{})

Errorf method output error level log.

func ErrorfC

func ErrorfC(ctx context.Context, format string, v ...interface{})

ErrorfC method output error level log. 并且在 链路追踪上添加对于log

func Fatal

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

Fatal method output fatal level log.

func FatalC

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

func Fatalf

func Fatalf(format string, v ...interface{})

Fatalf method output fatal level log.

func FatalfC

func FatalfC(ctx context.Context, format string, v ...interface{})

func Flush

func Flush()

func Info

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

Info method output info level log.

func InfoC

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

func Infof

func Infof(format string, v ...interface{})

Infof method output info level log.

func InfofC

func InfofC(ctx context.Context, format string, v ...interface{})

func Init

func Init(opts *Options)

Init 用指定的选项初始化 logger

func Panic

func Panic(msg string, fields ...Field)

Panic method output panic level log and shutdown application.

func PanicC

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

func Panicf

func Panicf(format string, v ...interface{})

Panicf method output panic level log and shutdown application.

func PanicfC

func PanicfC(ctx context.Context, format string, v ...interface{})

func StdInfoLogger

func StdInfoLogger() *stdlog.Logger

func Version

func Version() string

Version is the current release version.

func Warn

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

Warn method output warning level log.

func WarnC

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

func Warnf

func Warnf(format string, v ...interface{})

Warnf method output warning level log.

func WarnfC

func WarnfC(ctx context.Context, format string, v ...interface{})

func ZapLogger

func ZapLogger() *zap.Logger

ZapLogger used for other log wrapper such as klog.

Types

type Field

type Field = zapcore.Field

Field is an alias for the field structure in the underlying log frame.

type Level

type Level = zapcore.Level

Level is an alias for the level structure in the underlying log frame.

type LogHelper

type LogHelper interface {
	Info(msg string, fields ...Field)
	Infof(format string, v ...interface{})
	Warn(msg string, fields ...Field)
	Warnf(format string, v ...interface{})
	Error(msg string, fields ...Field)
	Errorf(format string, v ...interface{})
}

type Logger

type Logger struct {
	*zap.Logger
	// contains filtered or unexported fields
}

Logger 是 zap.Logger 的轻量封装, 它结合 Ctx 添加了相关链路追踪的方法

func New

func New(opts *Options) *Logger

New 通过 opts 创建 logger, 可以通过命令参数自定义

func (*Logger) Clone

func (l *Logger) Clone(opts ...Option) *Logger

Clone clones the current logger applying the supplied options.

func (*Logger) Ctx

func (l *Logger) Ctx(ctx context.Context) LoggerWithCtx

Ctx returns a new logger with the context.

func (*Logger) DPanicContext

func (l *Logger) DPanicContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) DPanicfContext

func (l *Logger) DPanicfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) DebugContext

func (l *Logger) DebugContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) DebugfContext

func (l *Logger) DebugfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) DebugwContext

func (l *Logger) DebugwContext(ctx context.Context, format string, v ...interface{})

func (*Logger) ErrorContext

func (l *Logger) ErrorContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) ErrorfContext

func (l *Logger) ErrorfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) FatalContext

func (l *Logger) FatalContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) FatalfContext

func (l *Logger) FatalfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) Flush

func (l *Logger) Flush()

func (*Logger) InfoContext

func (l *Logger) InfoContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) InfofContext

func (l *Logger) InfofContext(ctx context.Context, format string, v ...interface{})

func (*Logger) PanicContext

func (l *Logger) PanicContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) PanicfContext

func (l *Logger) PanicfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) Sugar

func (l *Logger) Sugar() *SugaredLogger

Sugar 包装了 Logger,提供了一个更符合人体工程学的、但稍微慢一些的 API 对 Logger 进行 Sugaring 的成本相当低廉, 因此在对性能敏感的代码边界上,在单个应用程序中使用 Logger 和 SugaredLogger 并在它们之间进行转换是合理的

func (*Logger) WarnContext

func (l *Logger) WarnContext(ctx context.Context, msg string, fields ...zapcore.Field)

func (*Logger) WarnfContext

func (l *Logger) WarnfContext(ctx context.Context, format string, v ...interface{})

func (*Logger) WithOptions

func (l *Logger) WithOptions(opts ...zap.Option) *Logger

WithOptions 克隆当前的 Logger, 并应用提供的 Options,然后返回结果的 Logger。可以安全地并发使用

type LoggerWithCtx

type LoggerWithCtx struct {
	// contains filtered or unexported fields
}

LoggerWithCtx is a wrapper for Logger that also carries a context.Context.

func (LoggerWithCtx) Clone

func (l LoggerWithCtx) Clone() LoggerWithCtx

Clone 方法克隆当前的日志记录器,并应用提供的选项

func (LoggerWithCtx) Context

func (l LoggerWithCtx) Context() context.Context

Context returns logger's context.

func (LoggerWithCtx) DPanic

func (l LoggerWithCtx) DPanic(msg string, fields ...zapcore.Field)

DPanic logs a message at DPanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

If the logger is in development mode, it then panics (DPanic means "development panic"). This is useful for catching errors that are recoverable, but shouldn't ever happen.

func (LoggerWithCtx) Debug

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

Debug logs a message at DebugLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

func (LoggerWithCtx) Error

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

Error logs a message at ErrorLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

func (LoggerWithCtx) Fatal

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

Fatal logs a message at FatalLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

The logger then calls os.Exit(1), even if logging at FatalLevel is disabled.

func (LoggerWithCtx) Info

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

Info logs a message at InfoLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

func (LoggerWithCtx) Logger

func (l LoggerWithCtx) Logger() *Logger

Logger returns the underlying logger.

func (LoggerWithCtx) Panic

func (l LoggerWithCtx) Panic(msg string, fields ...zapcore.Field)

Panic logs a message at PanicLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

The logger then panics, even if logging at PanicLevel is disabled.

func (LoggerWithCtx) Sugar

Sugar returns a sugared logger with the context.

func (LoggerWithCtx) Warn

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

Warn logs a message at WarnLevel. The message includes any fields passed at the log site, as well as any fields accumulated on the logger.

func (LoggerWithCtx) WithOptions

func (l LoggerWithCtx) WithOptions(opts ...zap.Option) LoggerWithCtx

WithOptions clones the current Logger, applies the supplied Options, and returns the resulting Logger. It's safe to use concurrently.

func (LoggerWithCtx) ZapLogger

func (l LoggerWithCtx) ZapLogger() *zap.Logger

ZapLogger returns the underlying zap logger.

type Option

type Option func(l *Logger)

func WithCaller

func WithCaller(on bool) Option

WithCaller configures the logger to annotate each event with the filename, line number, and function name of the caller.

It is enabled by default.

func WithErrorStatusLevel

func WithErrorStatusLevel(lvl zapcore.Level) Option

WithErrorStatusLevel sets the minimal zap logging level on which the span status is set to codes.Error.

The default is >= zap.ErrorLevel.

func WithMinLevel

func WithMinLevel(lvl zapcore.Level) Option

WithMinLevel sets the minimal zap logging level on which the log message is recorded on the span.

The default is >= zap.WarnLevel.

func WithStackTrace

func WithStackTrace(on bool) Option

WithStackTrace configures the logger to capture logs with a stack trace.

func WithTraceIDField

func WithTraceIDField(on bool) Option

WithTraceIDField 配置日志记录器,以在结构化日志消息中添加 trace_id 字段。

此选项仅对不支持 OTLP 的后端有用,而是解析日志消息以提取结构化信息

type Options

type Options struct {
	OutputPaths       []string `json:"output-paths"       mapstructure:"output-paths"`       // OutputPaths 输出路径
	ErrorOutputPaths  []string `json:"error-output-paths" mapstructure:"error-output-paths"` // ErrorOutputPaths 错误输出路径
	Level             string   `json:"level"              mapstructure:"level"`              // Level 运行 log 的 最低等级
	Format            string   `json:"format"             mapstructure:"format"`             // Format 目前只有两种选择 console json
	DisableCaller     bool     `json:"disable-caller"     mapstructure:"disable-caller"`     // 默认情况下, 记录日志调用者(caller)的信息 如: "caller":"demo04/main.go:11"
	DisableStacktrace bool     `json:"disable-stacktrace" mapstructure:"disable-stacktrace"` // 默认情况下, 禁用自动捕获堆栈跟踪
	EnableColor       bool     `json:"enable-color"       mapstructure:"enable-color"`       // 为 true 时, Format = console 开启将Level序列化为全大写字符串并添加颜色。例如,InfoLevel被序列化为INFO,并被标记为蓝色
	Development       bool     `json:"development"        mapstructure:"development"`        // Development 是否是开发模式
	Name              string   `json:"name"               mapstructure:"name"`               // 底层 zap logger 的名字
	EnableTraceID     bool     `json:"enable-trace-id"    mapstructure:"enable-trace-id"`    // EnableTraceID 是否开启traceID
	EnableTraceStack  bool     `json:"enable-trace-stack" mapstructure:"enable-trace-stack"` // EnableTraceStack 是否开启traceStack
}

Options contains configuration items related to log.

func NewOptions

func NewOptions() *Options

NewOptions 创建一个带有默认参数的 Options

@Description:
@return *Options

func (*Options) AddFlags

func (o *Options) AddFlags(fs *pflag.FlagSet)

AddFlags 函数为指定的 FlagSet 对象添加日志标志

func (*Options) Build

func (o *Options) Build() error

Build constructs a global zap logger from the Config and Options.

func (*Options) String

func (o *Options) String() string

func (*Options) Validate

func (o *Options) Validate() []error

Validate 验证 options 字段

type SugaredLogger

type SugaredLogger struct {
	*zap.SugaredLogger
	// contains filtered or unexported fields
}

SugaredLogger 在较慢但不太冗长的 API 中封装了基本 Logger 的功能。通过使用其 Sugar 方法,可以将任何 Logger 转换为 SugaredLogger。

与 Logger 不同,SugaredLogger 不坚持于结构化日志。对于每个日志级别,它提供三种方法:一种用于松散类型的结构化日志,一种用于 println 风格的格式化, 以及一种用于 printf 风格的格式化。例如,SugaredLoggers 可以使用 Infow("info with" 结构化上下文),Info 或 Infof 生成 InfoLevel 输出。

func (*SugaredLogger) Ctx

Ctx returns a new sugared logger with the context.

func (*SugaredLogger) DPanicfContext

func (s *SugaredLogger) DPanicfContext(ctx context.Context, template string, args ...interface{})

DPanicfContext uses fmt.Sprintf to log a templated message. In development, the logger then panics. (See DPanicLevel for details.)

func (*SugaredLogger) DPanicwContext

func (s *SugaredLogger) DPanicwContext(
	ctx context.Context, msg string, keysAndValues ...interface{},
)

DPanicwContext logs a message with some additional context. In development, the logger then panics. (See DPanicLevel for details.) The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) DebugfContext

func (s *SugaredLogger) DebugfContext(ctx context.Context, template string, args ...interface{})

DebugfContext uses fmt.Sprintf to log a templated message.

func (*SugaredLogger) DebugwContext

func (s *SugaredLogger) DebugwContext(ctx context.Context, msg string, keysAndValues ...interface{})

DebugwContext logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) Desugar

func (s *SugaredLogger) Desugar() *Logger

Desugar 方法解包 SugaredLogger,暴露原始的 Logger。 Desugaring 是比较廉价的,因此在性能敏感的代码边界, 单个应用程序可以同时使用 Loggers 和 SugaredLoggers,在它们之间进行转换是合理的

func (*SugaredLogger) ErrorfContext

func (s *SugaredLogger) ErrorfContext(ctx context.Context, template string, args ...interface{})

ErrorfContext uses fmt.Sprintf to log a templated message.

func (*SugaredLogger) ErrorwContext

func (s *SugaredLogger) ErrorwContext(
	ctx context.Context, msg string, keysAndValues ...interface{},
)

ErrorwContext logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) FatalfContext

func (s *SugaredLogger) FatalfContext(ctx context.Context, template string, args ...interface{})

Fatalf uses fmt.Sprintf to log a templated message, then calls os.Exit.

func (*SugaredLogger) FatalwContext

func (s *SugaredLogger) FatalwContext(ctx context.Context, msg string, keysAndValues ...interface{})

FatalwContext logs a message with some additional context, then calls os.Exit. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) InfofContext

func (s *SugaredLogger) InfofContext(ctx context.Context, template string, args ...interface{})

InfofContext uses fmt.Sprintf to log a templated message.

func (*SugaredLogger) InfowContext

func (s *SugaredLogger) InfowContext(ctx context.Context, msg string, keysAndValues ...interface{})

InfowContext logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) PanicfContext

func (s *SugaredLogger) PanicfContext(ctx context.Context, template string, args ...interface{})

PanicfContext uses fmt.Sprintf to log a templated message, then panics.

func (*SugaredLogger) PanicwContext

func (s *SugaredLogger) PanicwContext(ctx context.Context, msg string, keysAndValues ...interface{})

PanicwContext logs a message with some additional context, then panics. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) WarnfContext

func (s *SugaredLogger) WarnfContext(ctx context.Context, template string, args ...interface{})

WarnfContext uses fmt.Sprintf to log a templated message.

func (*SugaredLogger) WarnwContext

func (s *SugaredLogger) WarnwContext(ctx context.Context, msg string, keysAndValues ...interface{})

WarnwContext logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (*SugaredLogger) With

func (s *SugaredLogger) With(args ...interface{}) *SugaredLogger

With adds a variadic number of fields to the logging context. It accepts a mix of strongly-typed Field objects and loosely-typed key-value pairs. When processing pairs, the first element of the pair is used as the field key and the second as the field value.

For example,

 sugaredLogger.With(
   "hello", "world",
   "failure", errors.New("oh no"),
   Stack(),
   "count", 42,
   "user", User{Name: "alice"},
)

is the equivalent of

unsugared.With(
  String("hello", "world"),
  String("failure", "oh no"),
  Stack(),
  Int("count", 42),
  Object("user", User{Name: "alice"}),
)

Note that the keys in key-value pairs should be strings. In development, passing a non-string key panics. In production, the logger is more forgiving: a separate error is logged, but the key-value pair is skipped and execution continues. Passing an orphaned key triggers similar behavior: panics in development and errors in production.

type SugaredLoggerWithCtx

type SugaredLoggerWithCtx struct {
	// contains filtered or unexported fields
}

func (SugaredLoggerWithCtx) DPanicf

func (s SugaredLoggerWithCtx) DPanicf(template string, args ...interface{})

DPanicf uses fmt.Sprintf to log a templated message. In development, the logger then panics. (See DPanicLevel for details.)

func (SugaredLoggerWithCtx) DPanicw

func (s SugaredLoggerWithCtx) DPanicw(msg string, keysAndValues ...interface{})

DPanicw logs a message with some additional context. In development, the logger then panics. (See DPanicLevel for details.) The variadic key-value pairs are treated as they are in With.

func (SugaredLoggerWithCtx) Debugf

func (s SugaredLoggerWithCtx) Debugf(template string, args ...interface{})

Debugf uses fmt.Sprintf to log a templated message.

func (SugaredLoggerWithCtx) Debugw

func (s SugaredLoggerWithCtx) Debugw(msg string, keysAndValues ...interface{})

Debugw logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

When debug-level logging is disabled, this is much faster than

s.With(keysAndValues).Debug(msg)

func (SugaredLoggerWithCtx) Desugar

func (s SugaredLoggerWithCtx) Desugar() *Logger

Desugar 方法解包 SugaredLogger,暴露原始的 Logger。 Desugaring 是比较廉价的,因此在性能敏感的代码边界, 单个应用程序可以同时使用 Loggers 和 SugaredLoggers,在它们之间进行转换是合理的

func (SugaredLoggerWithCtx) Errorf

func (s SugaredLoggerWithCtx) Errorf(template string, args ...interface{})

Errorf uses fmt.Sprintf to log a templated message.

func (SugaredLoggerWithCtx) Errorw

func (s SugaredLoggerWithCtx) Errorw(msg string, keysAndValues ...interface{})

Errorw logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (SugaredLoggerWithCtx) Fatalf

func (s SugaredLoggerWithCtx) Fatalf(template string, args ...interface{})

Fatalf uses fmt.Sprintf to log a templated message, then calls os.Exit.

func (SugaredLoggerWithCtx) Fatalw

func (s SugaredLoggerWithCtx) Fatalw(msg string, keysAndValues ...interface{})

Fatalw logs a message with some additional context, then calls os.Exit. The variadic key-value pairs are treated as they are in With.

func (SugaredLoggerWithCtx) Infof

func (s SugaredLoggerWithCtx) Infof(template string, args ...interface{})

Infof uses fmt.Sprintf to log a templated message.

func (SugaredLoggerWithCtx) Infow

func (s SugaredLoggerWithCtx) Infow(msg string, keysAndValues ...interface{})

Infow logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

func (SugaredLoggerWithCtx) Panicf

func (s SugaredLoggerWithCtx) Panicf(template string, args ...interface{})

Panicf uses fmt.Sprintf to log a templated message, then panics.

func (SugaredLoggerWithCtx) Panicw

func (s SugaredLoggerWithCtx) Panicw(msg string, keysAndValues ...interface{})

Panicw logs a message with some additional context, then panics. The variadic key-value pairs are treated as they are in With.

func (SugaredLoggerWithCtx) Warnf

func (s SugaredLoggerWithCtx) Warnf(template string, args ...interface{})

Warnf uses fmt.Sprintf to log a templated message.

func (SugaredLoggerWithCtx) Warnw

func (s SugaredLoggerWithCtx) Warnw(msg string, keysAndValues ...interface{})

Warnw logs a message with some additional context. The variadic key-value pairs are treated as they are in With.

Jump to

Keyboard shortcuts

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