logger

package module
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Jan 22, 2026 License: Apache-2.0 Imports: 16 Imported by: 25

README

logger

基于github.com/wonderivan/logger改造,主要针对模块使用场景进行优化

2023.08.02

增强了在Windows平台上的颜色支持,Win7等系统中也可在控制台实现彩色输出

新增功能

支持类似zap的结构化日志功能,提供L()和S()风格的API,支持字段化日志记录。

1. 使用说明

普通使用

import  "gitee.com/liumou_site/logger"

// 配置logger,如果不配置时默认为控制台输出,等级为DEBG
logger.SetLogger(`{"Console": {"level": "DEBG"}`)
// 配置说明见下文

// 设置完成后,即可在控制台和日志文件app.log中看到如下输出
logger.Trace("this is Trace")
logger.Debug("this is Debug")
logger.Info("this is Info")
logger.Warn("this is Warn")
logger.Error("this is Error")
logger.Crit("this is Critical")
logger.Alert("this is Alert")
logger.Emer("this is Emergency")

结构化日志使用

L() 风格 - 类似 Zap 的全局 Logger
// 使用 L() 风格的结构化日志
logger.L().Info("应用启动",
    logger.String("version", "1.0.0"),
    logger.String("env", "production"),
    logger.Int("port", 8080),
)

logger.L().Error("数据库连接失败", 
    logger.String("host", "localhost"),
    logger.Int("port", 5432),
    logger.String("database", "myapp"),
    logger.Err("error", fmt.Errorf("连接超时")),
    logger.Duration("timeout", time.Second*30),
)
S() 风格 - Sugar Logger
// 使用 Sugar Logger 风格
logger.S().Infow("用户登录成功",
    logger.String("username", "alice"),
    logger.String("role", "admin"),
    logger.Bool("success", true),
    logger.Time("login_time", time.Now()),
)

// 使用全局糖化函数
logger.Infow("API 请求处理完成",
    logger.String("method", "POST"),
    logger.String("path", "/api/users/create"),
    logger.Int("status_code", 201),
    logger.Duration("response_time", time.Millisecond*125),
    logger.String("client_ip", "192.168.1.100"),
)
支持的字段类型
  • logger.String(key, value) - 字符串类型
  • logger.Int(key, value) - 整数类型
  • logger.Int64(key, value) - 64位整数类型
  • logger.Float64(key, value) - 浮点数类型
  • logger.Bool(key, value) - 布尔类型
  • logger.Err(key, error) - 错误类型
  • logger.Time(key, time) - 时间类型
  • logger.Duration(key, duration) - 时长类型
  • logger.Object(key, obj) - 对象类型
  • logger.Array(key, array) - 数组类型
  • logger.Any(key, value) - 任意类型
With 方法 - 持久字段
// 使用 With 方法创建带有固定字段的 logger
requestLogger := logger.L().With(
    logger.String("request_id", "req-789012"),
    logger.String("session_id", "sess-abcdef"),
    logger.String("endpoint", "/api/payment/process"),
)

requestLogger.Info("处理支付请求",
    logger.String("payment_method", "credit_card"),
    logger.Float64("amount", 99.99),
    logger.String("currency", "USD"),
)

输出结果(传统格式):

Demo

结构化日志输出示例(完全结构化输出,字段顺序固定):

{"timestamp":"2026-01-22T17:21:30+08:00","timestamp_nano":1769073690974308200,"level":"INFO","message":"应用启动","caller":"main:15","file":"main","line":15,"version":"1.0.0","env":"production","port":8080}

{"timestamp":"2026-01-22T17:21:30+08:00","timestamp_nano":1769073690991312700,"level":"EROR","message":"数据库连接失败","caller":"main:20","file":"main","line":20,"host":"localhost","port":5432,"database":"myapp","error":"连接超时"}

作为模块日志使用

显示模块名称
logs := NewLogger(1)
// logs.Version = "v1.0.3"
logs.Modular = "gcs"
logs.Trace("this is Trace")
logs.Debug("this is Debug")
logs.Info("this is Info")
logs.Warn("this is Warn")
logs.Error("this is Error")
logs.Crit("this is Critical")
logs.Alert("this is Alert")
logs.Emer("this is Emergency")

模块

显示模块+版本
logs := NewLogger(1)
logs.Version = "v1.0.3"
logs.Modular = "gcs"
logs.Trace("this is Trace")
logs.Debug("this is Debug")
logs.Info("this is Info")
logs.Warn("this is Warn")
logs.Error("this is Error")
logs.Crit("this is Critical")
logs.Alert("this is Alert")
logs.Emer("this is Emergency")

2. 日志等级

当前日志输出等级共8种,从0-7对应的等级由高到底,当配置为某个输出等级时,只有大于等于该等级的日志才会输出。不同的输出适配器支持不同的日志等级配置:

等级 配置 释义 控制台颜色
0 EMER 系统级紧急,比如磁盘出错,内存异常,网络不可用等 红色底
1 ALRT 系统级警告,比如数据库访问异常,配置文件出错等 紫色
2 CRIT 系统级危险,比如权限出错,访问异常等 蓝色
3 EROR 用户级错误 红色
4 WARN 用户级警告 黄色
5 INFO 用户级重要 天蓝色
6 DEBG 用户级调试 绿色
7 TRAC 用户级基本输出 绿色

3. 配置说明

logger当前支持控制台、文件、网络3种方式适配器输出,可以通过各自的参数进行设置,该logger支持多个方式同时输出,如果未配置某项适配器时,则不初始化也不会输出到该适配器。

通过调用logger.SetLogger(config string)方法设置参数,config支持json配置,也支持指定内容为json配置的文件路径,例如:

    // 通过配置参数直接配置
    logger.SetLogger(`{"Console": {"level": "DEBG"}}`)
    // 通过配置文件配置
    logger.SetLogger("/home/log.json")

{
    "TimeFormat":"2006-01-02 15:04:05", // 输出日志开头时间格式
    "Console": {            // 控制台日志配置
        "level": "TRAC",    // 控制台日志输出等级
        "color": true       // 控制台日志颜色开关 
    },
    "File": {                   // 文件日志配置
        "filename": "app.log",  // 初始日志文件名
        "level": "TRAC",        // 日志文件日志输出等级
        "daily": true,          // 跨天后是否创建新日志文件,当append=true时有效
        "maxlines": 1000000,    // 日志文件最大行数,当append=true时有效
        "maxsize": 1,           // 日志文件最大大小,当append=true时有效
        "maxdays": -1,          // 日志文件有效期
        "append": true,         // 是否支持日志追加
        "permit": "0660"        // 新创建的日志文件权限属性
    },
    "Conn": {                       // 网络日志配置
        "net":"tcp",                // 日志传输模式
        "addr":"10.1.55.10:1024",   // 日志接收服务器
        "level": "Warn",            // 网络日志输出等级
        "reconnect":true,           // 网络断开后是否重连
        "reconnectOnMsg":false,     // 发送完每条消息后是否断开网络
    }
}
  • 时间格式
时间类型 时间格式
ANSIC "Mon Jan _2 15:04:05 2006"
UnixDate "Mon Jan _2 15:04:05 MST 2006"
RubyDate "Mon Jan 02 15:04:05 -0700 2006"
RFC822 "02 Jan 06 15:04 MST"
RFC822Z "02 Jan 06 15:04 -0700"
RFC850 "Monday, 02-Jan-06 15:04:05 MST"
RFC1123 "Mon, 02 Jan 2006 15:04:05 MST"
RFC1123Z "Mon, 02 Jan 2006 15:04:05 -0700"
RFC3339 "2006-01-02T15:04:05Z07:00"
RFC3339Nano "2006-01-02T15:04:05.999999999Z07:00"
Kitchen "3:04PM"
Stamp "Jan _2 15:04:05"
StampMilli "Jan _2 15:04:05.000"
StampMicro "Jan _2 15:04:05.000000"
StampNano "Jan _2 15:04:05.000000000"
RFC3339Nano1 "2006-01-02 15:04:05.999999999 -0700 MST"
DEFAULT "2006-01-02 15:04:05"
  • 时间格式打印:
========RFC1123Z time format========
Thu, 02 Aug 2018 18:48:04 +0800 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC1123Z
========Stamp time format========
Aug  2 18:48:04 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Stamp
========StampMilli time format========
Aug  2 18:48:04.489 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampMilli
========StampNano time format========
Aug  2 18:48:04.490002155 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampNano
========RubyDate time format========
Thu Aug 02 18:48:04 +0800 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RubyDate
========RFC822 time format========
02 Aug 18 18:48 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC822
========RFC822Z time format========
02 Aug 18 18:48 +0800 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC822Z
========RFC1123 time format========
Thu, 02 Aug 2018 18:48:04 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC1123
========RFC3339 time format========
2018-08-02T18:48:04+08:00 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC3339
========RFC3339Nano time format========
2018-08-02T18:48:04.490377325+08:00 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC3339Nano
========ANSIC time format========
Thu Aug  2 18:48:04 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug ANSIC
========UnixDate time format========
Thu Aug  2 18:48:04 CST 2018 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug UnixDate
========RFC850 time format========
Thursday, 02-Aug-18 18:48:04 CST [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug RFC850
========Kitchen time format========
6:48PM [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug Kitchen
========StampMicro time format========
Aug  2 18:48:04.490662 [DEBG] [github.com/wonderivan/logger/log_test.go:115] Debug StampMicro

3.1 文件写入的配置方式

文件日志输出通过File适配器实现,支持多种参数配置,示例:

logger.SetLogger(`{
    "File": {
        "filename": "app.log",
        "level": "DEBG",
        "daily": true,
        "maxlines": 1000000,
        "maxsize": 1,
        "maxdays": 7,
        "append": true,
        "permit": "0660"
    }
}`)
  • filename:日志文件名,必填项。
  • level:日志输出等级,详见日志等级表。
  • daily:是否按天分割日志文件(跨天自动新建),默认true
  • maxlines:单个日志文件最大行数,超过后自动切分。
  • maxsize:单个日志文件最大大小(MB),超过后自动切分。
  • maxdays:日志文件最大保存天数,过期自动删除。
  • append:是否追加写入日志文件,默认true
  • permit:新建日志文件的权限(如0660)。

注意

  • append=truedaily=true时,跨天或超限会自动重命名旧文件并新建新文件,重命名格式如app.2023-08-01.001.log
  • 文件日志的所有参数均可在初始化时通过JSON配置传入。

3.2 控制台输出的配置方式

控制台日志输出通过Console适配器实现,支持如下参数:

logger.SetLogger(`{
    "Console": {
        "level": "DEBG",
        "color": true
    }
}`)
  • level:控制台日志输出等级。
  • color:是否开启彩色输出,Windows下同样支持。

3.3 全局初始化与输出类型切换

  • 全局初始化
    logger包默认初始化了全局的defaultLogger,无需手动创建即可直接调用如logger.Debug(...)等方法,适合大多数场景。

  • 多输出类型同时启用
    支持同时配置多种输出类型(如控制台+文件+网络),只需在JSON配置中同时写入多个适配器配置即可。例如:

    logger.SetLogger(`{
        "Console": {"level": "INFO"},
        "File": {"filename": "app.log", "level": "DEBG"}
    }`)
    
  • 动态切换/添加输出类型
    通过SetLogger(adapterName, config)方法可动态添加或切换某一输出类型。例如:

    logger.SetLogger("file", `{"filename":"new.log","level":"INFO"}`)
    logger.SetLogger("console", `{"level":"WARN","color":false}`)
    
  • 删除某一输出类型
    可通过DelLogger(adapterName)方法移除某一输出类型。


3.4 作为模块日志的全局用法

如需为不同模块单独管理日志,可通过NewLogger()创建独立实例,并分别设置模块名、版本号等:

logs := logger.NewLogger(1)
logs.Modular = "模块A"
logs.Version = "v1.2.3"
logs.SetLogger("file", `{"filename":"modA.log"}`)
logs.Info("模块A的日志")

3.5 配置文件方式

支持将所有配置写入JSON文件,通过如下方式加载:

logger.SetLogger("C:/path/to/logger.json")

3.6 日志文件路径显示(相对路径)

日志库现已默认自动获取当前工作目录作为日志路径前缀,日志输出时会自动显示为相对于项目根目录的相对路径(如 [subdir/file.go:23]),而不再仅显示文件名。

  • 如果不做任何设置,日志会自动以“当前工作目录”为基准显示相对路径,便于在多模块或多层级项目中快速定位日志来源。
  • 如果需要自定义路径前缀,可通过如下方式手动覆盖:
// 例如你的项目源码在 E:/CODE/gitee/go/logger 下
logger.SetLogPathTrim("E:/CODE/gitee/go/logger/")
// 之后日志输出会变成 [subdir/file.go:23] 这样的相对路径
  • 如果设置了 SetLogPathTrim("src/"),则会去除路径中的 src/ 前缀,显示为相对路径。

注意: 该设置对所有日志输出生效,用户手动设置会覆盖默认行为。


4. 其他

  1. logger默认是控制台输出,输出等级为DEBG,默认是支持颜色区分的。
  2. 日志文件append为true时,当写入的日志文件发生跨天(daily为true)或超过最大限制时,会创建一个新文件,原有文件格式被重命名为: ****.xxxx-xx-xx.xxx.xxx 格式,例如:当向app.log写入日志时,触发了创建新文件操作,则将app.log重命名为 app.2018-01-01.001.log, 如果此时app.2018-01-01.001.log已经存在,则将刚才的app.log重命名为 app.2018-01-01.002.log,以此类推。
  3. logger package默认初始化了全局的defaultLogger,直接调用logger包的Debug方法时,会默认调用defaultLogger.Debug,所以普通调用时,仅需要import logger即可使用。
  4. 网络配置中的reconnectOnMsg为每条消息都重连一次网络日志中心,适用于写日志频率极低的情况下的服务调用,避免长时间连接,占用资源。但强烈不建议普通使用时设置为true,这将会导致调用方反复的网络重连,极大增加资源消耗和延迟。
  5. conn网络输出适配器经过ELK集成环境的测试验证,通过该方式发送的日志,能够正常通过Elecsearch和Kibana检索和分析。

结构化日志功能特点

  • L() 风格: 类似 Zap 的全局结构化 Logger,提供 .Info(), .Error() 等方法
  • S() 风格: Sugar Logger 风格,提供 .Infow(), .Errorw() 等方法
  • 字段化记录: 支持多种数据类型的字段记录,如字符串、数字、布尔值、时间、错误等
  • 持久字段: 通过 .With() 方法可以创建带有固定字段的 Logger 实例
  • 兼容性: 完全兼容原有 API,新功能为新增功能,不影响现有代码
  • JSON输出: 结构化日志以 JSON 格式输出,便于日志分析系统解析

Documentation

Index

Constants

View Source
const (
	LevelEmergency     = iota // 系统级紧急,比如磁盘出错,内存异常,网络不可用等
	LevelAlert                // 系统级警告,比如数据库访问异常,配置文件出错等
	LevelCritical             // 系统级危险,比如权限出错,访问异常等
	LevelError                // 用户级错误
	LevelWarning              // 用户级警告
	LevelInformational        // 用户级信息
	LevelDebug                // 用户级调试
	LevelTrace                // 用户级基本输出
)

日志等级,从0-7,日优先级由高到低

View Source
const (
	AdapterConsole = "console" // 控制台输出配置项
	AdapterFile    = "file"    // 文件输出配置项
	AdapterConn    = "conn"    // 网络输出配置项
)

Variables

View Source
var LevelMap = map[string]int{
	"EMER": LevelEmergency,
	"ALRT": LevelAlert,
	"CRIT": LevelCritical,
	"EROR": LevelError,
	"WARN": LevelWarning,
	"INFO": LevelInformational,
	"DEBG": LevelDebug,
	"TRAC": LevelTrace,
}

日志等级和描述映射关系

Functions

func Alert

func Alert(f interface{}, v ...interface{})

Alert logs a message at alert level.

func AlertWithFields added in v1.3.0

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

func Crit

func Crit(f interface{}, v ...interface{})

Crit logs a message at critical level.

func CritWithFields added in v1.3.0

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

func DPanicw added in v1.3.0

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

func Debug

func Debug(f interface{}, v ...interface{})

Notice logs a message at debug level.

func DebugWithFields added in v1.3.0

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

func Debugw added in v1.3.0

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

func Emer

func Emer(f interface{}, v ...interface{})

Emer logs a message at emergency level.

func EmerWithFields added in v1.3.0

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

func Error

func Error(f interface{}, v ...interface{})

Error logs a message at error level.

func ErrorWithFields added in v1.3.0

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

func Errorw added in v1.3.0

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

func Fatal

func Fatal(f interface{}, v ...interface{})

Fatal logs a message at emergency level and exit.

func Fatalw added in v1.3.0

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

func Info

func Info(f interface{}, v ...interface{})

Info logs a message at info level.

func InfoWithFields added in v1.3.0

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

全局结构化日志函数

func Infow added in v1.3.0

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

全局糖化日志函数

func Painc

func Painc(f interface{}, v ...interface{})

Painc logs a message at emergency level and panic.

func Panicw added in v1.3.0

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

func Register

func Register(name string, log Logger)

日志输出适配器注册,log需要实现Init,LogWrite,Destroy方法

func Reset

func Reset()

Reset will remove all the adapter

func SetLogPathTrim

func SetLogPathTrim(trimPath string)

func SetLogger

func SetLogger(param ...string) error

param 可以是log配置文件名,也可以是log配置内容,默认DEBUG输出到控制台

func Trace

func Trace(f interface{}, v ...interface{})

Trace logs a message at trace level.

func VersionStr added in v1.2.0

func VersionStr()

func Warn

func Warn(f interface{}, v ...interface{})

Warn logs a message at warning level.

func WarnWithFields added in v1.3.0

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

func Warnw added in v1.3.0

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

Types

type Field added in v1.3.0

type Field struct {
	Type  FieldType
	Key   string
	Value interface{}
}

func Any added in v1.3.0

func Any(key string, value interface{}) Field

func Array added in v1.3.0

func Array(key string, arr interface{}) Field

func Bool added in v1.3.0

func Bool(key string, val bool) Field

func Duration added in v1.3.0

func Duration(key string, d time.Duration) Field

func Err added in v1.3.0

func Err(key string, err error) Field

func Float64 added in v1.3.0

func Float64(key string, val float64) Field

func Int added in v1.3.0

func Int(key string, val int) Field

func Int64 added in v1.3.0

func Int64(key string, val int64) Field

func Object added in v1.3.0

func Object(key string, obj interface{}) Field

func String added in v1.3.0

func String(key, val string) Field

字段构造函数

func Time added in v1.3.0

func Time(key string, t time.Time) Field

type FieldType added in v1.3.0

type FieldType int

结构化日志相关类型定义

const (
	StringType FieldType = iota
	IntType
	Int64Type
	Float64Type
	BoolType
	ObjectType
	ArrayType
	ErrorType
	TimeType
	DurationType
	AnyType
)

type KeyValue added in v1.3.0

type KeyValue struct {
	Key   string
	Value interface{}
}

KeyValue 表示一个键值对,用于维护字段顺序

type LocalLogger

type LocalLogger struct {
	Version string // 设置版本信息
	Modular string // 模块名称
	// contains filtered or unexported fields
}

func GetlocalLogger

func GetlocalLogger() *LocalLogger

GetlocalLogger returns the defaultLogger

func NewLogger

func NewLogger(depth ...int) *LocalLogger

func (*LocalLogger) Alert

func (logs *LocalLogger) Alert(format string, v ...interface{})

Alert Log ALERT level message.

func (*LocalLogger) Close

func (logs *LocalLogger) Close()

func (*LocalLogger) Crit

func (logs *LocalLogger) Crit(format string, v ...interface{})

Crit Log CRITICAL level message.

func (*LocalLogger) Debug

func (logs *LocalLogger) Debug(format string, v ...interface{})

Debug Log DEBUG level message.

func (*LocalLogger) DelLogger

func (logs *LocalLogger) DelLogger(adapterName string) error

func (*LocalLogger) Emer

func (logs *LocalLogger) Emer(format string, v ...interface{})

Emer Log EMERGENCY level message.

func (*LocalLogger) Error

func (logs *LocalLogger) Error(format string, v ...interface{})

Error Log ERROR level message.

func (*LocalLogger) Fatal

func (logs *LocalLogger) Fatal(format string, args ...interface{})

func (*LocalLogger) Info

func (logs *LocalLogger) Info(format string, v ...interface{})

Info Log INFO level message.

func (*LocalLogger) Panic

func (logs *LocalLogger) Panic(format string, args ...interface{})

func (*LocalLogger) Reset

func (logs *LocalLogger) Reset()

func (*LocalLogger) SetCallDepth

func (logs *LocalLogger) SetCallDepth(depth int)

func (*LocalLogger) SetLogPathTrim

func (logs *LocalLogger) SetLogPathTrim(trimPath string)

设置日志起始路径

func (*LocalLogger) SetLogger

func (logs *LocalLogger) SetLogger(adapterName string, configs ...string) error

func (*LocalLogger) Trace

func (logs *LocalLogger) Trace(format string, v ...interface{})

Trace Log TRAC level message.

func (*LocalLogger) Warn

func (logs *LocalLogger) Warn(format string, v ...interface{})

Warn Log WARNING level message.

type Logger

type Logger interface {
	Init(config string) error
	LogWrite(when time.Time, msg interface{}, level int) error
	Destroy()
}

log provider interface

type OrderedFields added in v1.3.0

type OrderedFields struct {
	Fields []KeyValue
	Keys   map[string]bool // 用于快速查找key是否存在
}

OrderedFields 维护字段顺序

type StructuredLogger added in v1.3.0

type StructuredLogger struct {
	*LocalLogger
	// contains filtered or unexported fields
}

StructuredLogger 提供结构化日志记录功能

func L added in v1.3.0

func L() *StructuredLogger

获取默认的 StructuredLogger 实例

func NewStructuredLogger added in v1.3.0

func NewStructuredLogger(fields ...Field) *StructuredLogger

构造 StructuredLogger 实例

func (*StructuredLogger) Alert added in v1.3.0

func (sl *StructuredLogger) Alert(msg string, fields ...Field)

func (*StructuredLogger) Crit added in v1.3.0

func (sl *StructuredLogger) Crit(msg string, fields ...Field)

func (*StructuredLogger) Debug added in v1.3.0

func (sl *StructuredLogger) Debug(msg string, fields ...Field)

func (*StructuredLogger) Emer added in v1.3.0

func (sl *StructuredLogger) Emer(msg string, fields ...Field)

func (*StructuredLogger) Error added in v1.3.0

func (sl *StructuredLogger) Error(msg string, fields ...Field)

func (*StructuredLogger) Info added in v1.3.0

func (sl *StructuredLogger) Info(msg string, fields ...Field)

func (*StructuredLogger) Warn added in v1.3.0

func (sl *StructuredLogger) Warn(msg string, fields ...Field)

func (*StructuredLogger) With added in v1.3.0

func (sl *StructuredLogger) With(fields ...Field) *StructuredLogger

With 方法用于添加持久字段

type SugarLogger added in v1.3.0

type SugarLogger struct {
	*LocalLogger
}

SugarLogger 提供类似 zap 的易用性

var SugaredLogger *SugarLogger

SugaredLogger 是 SugarLogger 的全局实例

func NewSugarLogger added in v1.3.0

func NewSugarLogger() *SugarLogger

构造 SugarLogger 实例

func S added in v1.3.0

func S() *SugarLogger

获取默认的 SugarLogger 实例

func (*SugarLogger) DPanicw added in v1.3.0

func (s *SugarLogger) DPanicw(msg string, fields ...Field)

func (*SugarLogger) Debugw added in v1.3.0

func (s *SugarLogger) Debugw(msg string, fields ...Field)

func (*SugarLogger) Errorw added in v1.3.0

func (s *SugarLogger) Errorw(msg string, fields ...Field)

func (*SugarLogger) Fatalw added in v1.3.0

func (s *SugarLogger) Fatalw(msg string, fields ...Field)

func (*SugarLogger) Infow added in v1.3.0

func (s *SugarLogger) Infow(msg string, fields ...Field)

SugarLogger 方法

func (*SugarLogger) Panicw added in v1.3.0

func (s *SugarLogger) Panicw(msg string, fields ...Field)

func (*SugarLogger) Warnw added in v1.3.0

func (s *SugarLogger) Warnw(msg string, fields ...Field)

Jump to

Keyboard shortcuts

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