Categorygithub.com/dep2p/log
modulepackage
0.0.1
Repository: https://github.com/dep2p/log.git
Documentation: pkg.go.dev

# README

log

GoDoc

go-dep2p 使用的日志库

log 封装了 zap 以提供日志门面。log 管理日志实例并允许单独控制它们的级别。

安装

go get github.com/dep2p/log

使用方法

导入包并以 logging 命名后,可以像这样创建 EventLogger 实例:

var log = logging.Logger("子系统名称")

然后可以使用它来输出 printf 风格的日志消息,支持七个标准级别。

可以为所有日志记录器设置级别:

lvl, err := logging.LevelFromString("error")
if err != nil {
	panic(err)
}
logging.SetAllLoggers(lvl)

也可以单独设置:

err := logging.SetLogLevel("net:pubsub", "info")
if err != nil {
	panic(err)
}

或通过正则表达式设置:

err := logging.SetLogLevelRegex("net:.*", "info")
if err != nil {
	panic(err)
}

环境变量

本包可以通过多个环境变量进行配置。

GOLOG_LOG_LEVEL

指定日志级别,可以全局设置也可以针对每个子系统设置。

例如,以下设置会将全局最低日志级别设为 error,但将 subsystem1 的最低日志级别降至 info,将 subsystem2 的最低日志级别降至 debug

export GOLOG_LOG_LEVEL="error,subsystem1=info,subsystem2=debug"

DeP2P_LOGGING 是此环境变量的已弃用别名。

GOLOG_FILE

指定日志应写入的文件。如果未指定此选项,日志将写入标准错误输出。

export GOLOG_FILE="/path/to/my/file.log"

GOLOG_OUTPUT

指定日志输出的位置。可以使用以下一个或多个值,用 + 组合:

  • stdout -- 写入标准输出
  • stderr -- 写入标准错误
  • file -- 写入 GOLOG_FILE 指定的文件

例如,如果要同时输出到文件和标准错误:

export GOLOG_FILE="/path/to/my/file.log"
export GOLOG_OUTPUT="stderr+file"

仅设置 GOLOG_FILE 将阻止日志写入标准错误。

GOLOG_LOG_FMT

指定日志消息格式。支持以下值:

  • color -- 人类可读的彩色(ANSI)输出
  • nocolor -- 人类可读的纯文本输出
  • json -- 结构化 JSON

例如,要输出结构化 JSON(便于解析):

export GOLOG_LOG_FMT="json"

当输出到终端时,日志格式默认为 color,否则默认为 nocolor

DeP2P_LOGGING_FMT 是此环境变量的已弃用别名。

GOLOG_LOG_LABELS

指定应添加到所有日志消息中的标签集,以逗号分隔的键值对形式。例如,以下设置会为每个日志条目添加 {"app": "example_app", "dc": "sjc-1"}

export GOLOG_LOG_LABELS="app=example_app,dc=sjc-1"

许可证

MIT

# Functions

FormatRFC3339 将给定时间转换为UTC时区的RFC3339Nano格式 Params: - t: 需要格式化的时间 Returns: - string: 格式化后的时间字符串.
GetConfig 返回已保存配置的副本 可以检查、修改配置,并通过后续调用SetupLogging()重新应用 返回值: - Config: 当前日志配置的副本.
GetSubsystems 返回所有已注册的logger名称列表 返回值: - []string: 包含所有logger名称的字符串切片.
LevelFromString 将字符串形式的日志级别解析为 LogLevel 类型 参数: - level: 要解析的日志级别字符串,支持的值包括: DEBUG, INFO, WARN, ERROR, DPANIC, PANIC, FATAL 以及它们的小写形式 返回: - LogLevel: 解析后的日志级别 - error: 解析过程中的错误,如果返回错误则应丢弃返回的 LogLevel.
Logger 根据系统名称获取事件日志记录器 Params: - system: 系统名称,用于标识日志来源 Returns: - *ZapEventLogger: 返回一个基于Zap的事件日志记录器.
NewPipeReader 创建一个新的内存读取器,用于从所有日志记录器中读取数据 调用者必须在使用完成后调用返回的读取器的 Close 方法 参数: - opts: 可选的配置选项列表 返回值: - *PipeReader: 新创建的管道读取器 默认情况下: 1.
PipeFormat 设置管道读取器的输出格式 参数: - format: 要设置的日志格式 返回值: - PipeReaderOption: 用于配置管道读取器的选项.
PipeLevel 设置发送到管道读取器的日志级别 参数: - level: 要设置的日志级别 返回值: - PipeReaderOption: 用于配置管道读取器的选项.
SetAllLoggers 将所有logger的日志级别更改为指定级别 参数: - lvl: 要设置的日志级别.
SetDebugLogging 将所有日志级别设置为DEBUG.
SetLogLevel 更改特定子系统的日志级别 参数: - name: 子系统名称,"*"表示所有子系统 - level: 要设置的日志级别字符串 返回值: - error: 设置过程中的错误,如果成功则为nil.
SetLogLevelRegex 将所有匹配表达式`e`的logger设置为级别`l` 参数: - e: 正则表达式字符串,用于匹配logger名称 - l: 要设置的日志级别字符串 返回值: - error: 设置过程中的错误,如果成功则为nil.
SetPrimaryCore 更改主日志core 参数: - core: 要设置的新日志core 如果已调用SetupLogging,则会替换之前配置的core.
SetupLogging 初始化logger后端并设置标志 参数: - cfg: Config 日志配置对象.
WithSkip 返回一个新的日志记录器,在报告行号/文件时跳过指定数量的调用栈帧 Params: - l: 原始日志记录器 - skip: 需要跳过的调用栈帧数量 Returns: - *ZapEventLogger: 返回新的日志记录器.
WithStacktrace 为指定日志级别添加堆栈跟踪功能 Params: - l: 原始日志记录器 - level: 需要添加堆栈跟踪的日志级别 Returns: - *ZapEventLogger: 返回新的带有堆栈跟踪功能的日志记录器.

# Constants

彩色输出格式.
JSON输出格式.
纯文本输出格式.

# Variables

ErrNoSuchLogger 当请求不存在的logger时返回此错误.
LevelDebug 表示调试级别日志.
LevelDPanic 表示开发环境恐慌级别日志.
LevelError 表示错误级别日志.
LevelFatal 表示致命错误级别日志.
LevelInfo 表示信息级别日志.
LevelPanic 表示恐慌级别日志.
LevelWarn 表示警告级别日志.

# Structs

Config 日志配置结构体.
PipeReader 是一个从日志记录器读取数据的读取器。它是同步的, 因此在读取时阻塞会影响日志记录性能。.
ZapEventLogger 实现了EventLogger接口,封装了zap的SugaredLogger.

# Interfaces

EventLogger 扩展了StandardLogger接口,允许日志项包含结构化元数据.
PipeReaderOption 定义配置选项的接口.
StandardLogger 定义了一个标准日志接口,提供与标准printf日志记录器的API兼容性 例如: go-logging.

# Type aliases

LogFormat 日志格式类型.
LogLevel 表示日志严重性级别 使用包变量作为枚举值.