zaplogs

package module
v0.0.2 Latest Latest
Warning

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

Go to latest
Published: Jul 28, 2026 License: MIT Imports: 9 Imported by: 0

README

zaplogs

一个基于 uber-go/zap 的轻量级日志封装库,提供开箱即用的日志功能,支持控制台输出、文件轮转、多日志器管理。

English

特性

  • 零配置启动 — 无需任何初始化即可直接使用全局日志函数
  • 多日志器管理 — 按名称创建和管理多个独立日志器
  • 日志轮转 — 基于 lumberjack 实现自动日志切割与压缩
  • 灵活的控制台格式 — 通过格式字符串自定义输出字段(时间/级别/调用者/消息)
  • 并发安全 — 所有日志器操作均为线程安全
  • 高性能 — 底层基于 zap,保持极低开销

安装

go get zaplogs

快速开始

零配置使用(全局函数)

无需任何初始化,直接调用包级函数即可输出日志:

package main

import "zaplogs"

func main() {
    zaplogs.Info("服务启动")
    zaplogs.Infof("监听端口: %d", 8080)
    zaplogs.Warn("磁盘空间不足")
    zaplogs.Errorf("连接失败: %v", err)
}
自定义配置
package main

import "zaplogs"

func main() {
    // 创建配置: 级别, 日志文件路径, 控制台格式
    config := zaplogs.NewLogConfig("debug", "./logs/app.log", "TLCM")
    
    // 初始化默认日志器
    if err := zaplogs.InitDefaultLogger(config); err != nil {
        panic(err)
    }
    defer zaplogs.Sync()

    zaplogs.Debugf("调试信息: %s", "hello")
    zaplogs.Infof("用户 %s 登录成功", "admin")
}
多日志器
package main

import "zaplogs"

func main() {
    // 创建业务日志器
    bizConfig := zaplogs.NewLogConfig("info", "./logs/biz.log", "LCM")
    bizLogger, err := zaplogs.CreateLogger("business", bizConfig)
    if err != nil {
        panic(err)
    }

    // 创建访问日志器
    accessConfig := zaplogs.NewLogConfig("info", "./logs/access.log", "TM")
    accessLogger, err := zaplogs.CreateLogger("access", accessConfig)
    if err != nil {
        panic(err)
    }

    bizLogger.Infof("订单创建成功: %s", orderID)
    accessLogger.Infof("GET /api/users 200 12ms")

    // 获取已有日志器
    logger, exists := zaplogs.GetLogger("business")
    if exists {
        logger.Info("通过名称获取日志器")
    }

    // 关闭所有日志器
    defer zaplogs.CloseAll()
}

配置说明

LogConfig 字段
字段 类型 默认值 说明
Level string "info" 日志级别: debug / info / warn / error / fatal
LogFile string "" 日志文件路径,空串表示不输出到文件
ConsoleFormat string "LCM" 控制台输出格式,"off" 或空串关闭控制台输出
MaxSize int 100 单个日志文件最大大小(MB)
MaxBackups int 10 最多保留的日志备份数量
MaxAge int 30 日志文件保留天数
Compress bool true 是否压缩备份文件
控制台格式字符串

格式字符串由以下字符组合而成:

字符 含义 示例输出
T 时间 (ISO8601) 2024-05-20T15:30:00.000+0800
L 日志级别 INFO / ERROR
C 调用者位置 main.go:20
M 日志消息 实际日志内容

示例:"TLCM" 输出完整信息,"LM" 仅输出级别和消息,"off" 关闭控制台。

API 概览

全局函数(使用默认日志器)
zaplogs.Debug(args ...interface{})
zaplogs.Debugf(template string, args ...interface{})
zaplogs.Info(args ...interface{})
zaplogs.Infof(template string, args ...interface{})
zaplogs.Warn(args ...interface{})
zaplogs.Warnf(template string, args ...interface{})
zaplogs.Error(args ...interface{})
zaplogs.Errorf(template string, args ...interface{})
zaplogs.Fatal(args ...interface{})
zaplogs.Fatalf(template string, args ...interface{})
zaplogs.Sync() error
日志器管理
zaplogs.CreateLogger(name string, config LogConfig) (*Logger, error)
zaplogs.GetLogger(name string) (*Logger, bool)
zaplogs.CloseAll() error
Logger 实例方法
logger.Debug(args ...interface{})
logger.Debugf(template string, args ...interface{})
logger.Info(args ...interface{})
logger.Infof(template string, args ...interface{})
logger.Warn(args ...interface{})
logger.Warnf(template string, args ...interface{})
logger.Error(args ...interface{})
logger.Errorf(template string, args ...interface{})
logger.Fatal(args ...interface{})
logger.Fatalf(template string, args ...interface{})
logger.Sync() error

示例

完整示例代码请查看 examples 目录:

依赖

License

MIT

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CloseAll

func CloseAll() error

CloseAll 关闭所有日志器

func Debug

func Debug(args ...interface{})

func Debugf

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

旧版本全局日志函数,直接转发到 default 日志器

func Error

func Error(args ...interface{})

func Errorf

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

func Fatal

func Fatal(args ...interface{})

func Fatalf

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

func Info

func Info(args ...interface{})

func Infof

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

func InitDefaultLogger

func InitDefaultLogger(config LogConfig) error

InitDefaultLogger 旧版本初始化函数,兼容老代码

func NewDefaultLogger

func NewDefaultLogger(level, logFile, consoleFormat string) error

NewDefaultLogger 旧版本初始化函数,兼容老代码

func Sync

func Sync() error

Sync 旧版本全局刷新函数

func Warn

func Warn(args ...interface{})

func Warnf

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

Types

type LogConfig

type LogConfig struct {
	Level         string // 日志级别: debug/info/warn/error/fatal
	LogFile       string // 日志文件路径,空串表示不输出到文件
	ConsoleFormat string // 控制台格式: 空串或"off"表示关闭,支持"T(时间)L(级别)C(调用者)M(消息)"
	MaxSize       int    // 单个日志文件文件最大大小
	MaxBackups    int    // 最多保留几个日志文件备份
	MaxAge        int    // 日志文件保留多少天
	Compress      bool   // 日志备份文件是否压缩
}

LogConfig 日志配置结构体

func NewLogConfig

func NewLogConfig(level, logFile, consoleFormat string) LogConfig

NewLogConfig 创建日志配置实例,提供默认值

func NewLogConfigEmpty

func NewLogConfigEmpty() LogConfig

NewLogConfigEmpty 创建日志配置实例,提供全部默认值

type Logger

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

Logger 日志器实例,线程安全

func CreateLogger

func CreateLogger(name string, config LogConfig) (*Logger, error)

CreateLogger 创建新的日志器

func GetLogger

func GetLogger(name string) (*Logger, bool)

GetLogger 获取已创建的日志器

func (*Logger) Debug

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

func (*Logger) Debugf

func (l *Logger) Debugf(template string, args ...interface{})

日志输出方法

func (*Logger) Error

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

func (*Logger) Errorf

func (l *Logger) Errorf(template string, args ...interface{})

func (*Logger) Fatal

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

func (*Logger) Fatalf

func (l *Logger) Fatalf(template string, args ...interface{})

func (*Logger) Info

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

func (*Logger) Infof

func (l *Logger) Infof(template string, args ...interface{})

func (*Logger) Sync

func (l *Logger) Sync() error

Sync 刷新日志缓冲区

func (*Logger) Warn

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

func (*Logger) Warnf

func (l *Logger) Warnf(template string, args ...interface{})

Directories

Path Synopsis
examples
basic command
file-output command
multi-logger command

Jump to

Keyboard shortcuts

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