tlog

package module
v1.1.14 Latest Latest
Warning

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

Go to latest
Published: Jun 10, 2025 License: AFL-3.0 Imports: 9 Imported by: 1

README

tlog

日志记录,集成多样化的日志处理,让一次请求的日志都统一一个任务id;

使用示例

示例代码

package main

import (
	"context"
	"errors"
	"time"

	"gitee.com/dn-jinmin/tlog"
)

func main() {
	// 初始化
	tlog.Init(
		tlog.WithMode(tlog.All),
		tlog.WithLabel("tlog示例"),
		tlog.WithLoggerWriter(tlog.NewLoggerWriter()),
	)

	startTime := time.Now()

	ctx := tlog.TraceStart(context.Background())

	tlog.InfoCtx(ctx, "", "tlog示例")

	service := NewOrderService()
	service.GetOrder(ctx, "1234567890")
	time.Sleep(time.Microsecond * 3)
	tlog.InfoCtx(ctx, "", "tlog示例 结束", tlog.RTField(startTime, time.Now()))
	time.Sleep(time.Second)
}
// ------------- service ---------------------

type OrderService struct {
	*OrderModel
}

func NewOrderService() *OrderService {
	return &OrderService{
		OrderModel: NewOrderModel(),
	}
}
func (s *OrderService) GetOrder(ctx context.Context, orderId string) (interface{}, error) {

	tlog.DebugfCtx(ctx, orderId, "orderId %v", orderId)

	data, err := s.OrderModel.GetOrder(ctx, orderId)
	if err != nil {
		tlog.ErrorfCtx(ctx, orderId, "orderId %v, err %v", orderId, err)
	}

	tlog.InfofCtx(ctx, orderId, "orderId %v, data %v", orderId, data)

	return "订单数据", errors.New("示例的异常")
}

// -------------- model ---------------------

type OrderModel struct{}

func NewOrderModel() *OrderModel {
	return &OrderModel{}
}
func (m *OrderModel) GetOrder(ctx context.Context, orderId string) (interface{}, error) {
	tlog.InfofCtx(ctx, orderId, "orderId %v", orderId)
	return "订单数据", errors.New("示例的异常")
}

运行效果

# go\src\gitee.com\dn-jinmin\tlog\example> go run .
{"tlog_label":"tlog示例","tlog_msg":"orderId 1234567890, data 订单数据","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:59","tlog_relatedId":"1234567890","trace":"d57ba11688a7d07c"}
{"tlog_label":"tlog示例","tlog_msg":"tlog示例 结束","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:35","tlog_relatedId":"","tlog_rt":"516.8µs","trace":"d57ba11688a7d07c"}
{"tlog_label":"tlog示例","tlog_msg":"tlog示例","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:30","tlog_relatedId":"","trace":"d57ba11688a7d07c"}
{"tlog_label":"tlog示例","tlog_msg":"orderId 1234567890","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:72","tlog_relatedId":"1234567890","trace":"d57ba11688a7d07c"}
{"tlog_label":"tlog示例","tlog_msg":"orderId 1234567890","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:52","tlog_relatedId":"1234567890","trace":"d57ba11688a7d07c"}
{"tlog_label":"tlog示例","tlog_msg":"orderId 1234567890, err 示例的异常","tlog_path":"D:/01.project/01.go/src/gitee.com/dn-jinmin/tlog/example/main.go:56","tlog_relatedId":"1234567890","trace":"d57ba11688a7d07c"}

扩展

只需要实现logger接口即可

type LoggerWriter interface {
    ////
    // Write
    //  @Description: 日志写处理
    //  @param ctx
    //
    Write(ctx context.Context, content *Content, fields ...Field)
}

扫扫关注

Documentation

Index

Constants

View Source
const (
	INFO   = "info"
	ERROR  = "error"
	DEBUG  = "debug"
	FATAL  = "fatal"
	SLOW   = "slow"
	STAT   = "stat"
	SEVERE = "severe"
	ALERT  = "ALERT"
)

level

Variables

View Source
var (
	TlogTraceId   = "tlog_id"
	TlogRelatedId = "tlog_relatedId"
	TlogPath      = "tlog_path"
	TlogMsg       = "tlog_msg"
	TlogLabel     = "tlog_label"
	TlogLevel     = "tlog_level"
)
View Source
var TlogRTField = "tlog_rt"

Functions

func Alert

func Alert(relatedId string, msg interface{}, fields ...Field)

记录Debug日志:在生产环境下不输出信息

func AlertCtx

func AlertCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Alertf

func Alertf(relatedId, format string, a ...any)

记录Debug日志: 在生产环境下不输出信息

func AlertfCtx

func AlertfCtx(ctx context.Context, relatedId, format string, a ...any)

func Debug

func Debug(relatedId string, msg interface{}, fields ...Field)

func DebugCtx

func DebugCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Debugf

func Debugf(relatedId, format string, a ...any)

func DebugfCtx

func DebugfCtx(ctx context.Context, relatedId, format string, a ...any)

func Error

func Error(relatedId string, msg interface{}, fields ...Field)

func ErrorCtx

func ErrorCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Errorf

func Errorf(relatedId, format string, a ...any)

func ErrorfCtx

func ErrorfCtx(ctx context.Context, relatedId, format string, a ...any)

func Fatal

func Fatal(relatedId string, msg interface{}, fields ...Field)

func FatalCtx

func FatalCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Fatalf

func Fatalf(relatedId, format string, a ...any)

func FatalfCtx

func FatalfCtx(ctx context.Context, relatedId, format string, a ...any)

func GetTraceId added in v1.1.13

func GetTraceId(ctx context.Context) (traceId string)

func Info

func Info(relatedId string, msg interface{}, fields ...Field)

func InfoCtx

func InfoCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Infof

func Infof(relatedId, format string, a ...any)

func InfofCtx

func InfofCtx(ctx context.Context, relatedId, format string, a ...any)

func Init

func Init(opts ...Options)

初始化logx

func MsgMarshal

func MsgMarshal(v interface{}) string

func NewLog

func NewLog(opts ...Options) *log

func NewLogger

func NewLogger(opts ...Options) *logger

func NewLoggerWriter

func NewLoggerWriter() *loggerWriter

func RandId

func RandId() string

func Randn

func Randn(n int) string

func Severe

func Severe(relatedId string, msg interface{}, fields ...Field)

func SevereCtx

func SevereCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Severef

func Severef(relatedId, format string, a ...any)

func SeverefCtx

func SeverefCtx(ctx context.Context, relatedId, format string, a ...any)

func Slow

func Slow(relatedId string, msg interface{}, fields ...Field)

func SlowCtx

func SlowCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Slowf

func Slowf(relatedId, format string, a ...any)

func SlowfCtx

func SlowfCtx(ctx context.Context, relatedId, format string, a ...any)

func Stat

func Stat(relatedId string, msg interface{}, fields ...Field)

func StatCtx

func StatCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)

func Statf

func Statf(relatedId, format string, a ...any)

func StatfCtx

func StatfCtx(ctx context.Context, relatedId, format string, a ...any)

func TraceId

func TraceId() string

func TraceStart

func TraceStart(ctx context.Context) context.Context

func TraceStartSetTraceId

func TraceStartSetTraceId(ctx context.Context, traceId string) context.Context

func WithSkip added in v1.1.11

func WithSkip(ctx context.Context, val int) context.Context

Types

type Config

type Config struct {
	// 系统的开发模式
	Mode int
	// 日志标签
	Label string

	LogWriteLimit int
	// 日志的Logger对象
	LoggerWriter []LoggerWriter
}

type Content

type Content struct {
	TraceId   string `json:"tlog_traceId"`
	Path      string `json:"tlog_path"`
	RelatedId string `json:"tlog_relatedId"`
	Msg       string `json:"tlog_msg"`
	Label     string `json:"tlog_label"`
	Level     string `json:"tlog_level"`
}

func (*Content) BuildFields

func (c *Content) BuildFields(fields ...Field) map[string]interface{}

type Field

type Field struct {
	Key string
	Val any
}

func RTField

func RTField(startTime time.Time, endTime time.Time) Field

type LogContext

type LogContext struct{}

type LogFileLine

type LogFileLine struct{}

type LogMod

type LogMod int
const (
	All LogMod = iota + 1
	DEV
	PROD
)

mode 日志的模式;0.所有信息都会写入到Logger中、1.所有信息会输出在控制台,2.只将Info,Error输出到Logger中

type Logger

type Logger interface {
	Errorf(relatedId, format string, a ...any)
	Error(relatedId string, msg interface{}, fields ...Field)
	ErrorfCtx(ctx context.Context, relatedId, format string, a ...any)
	ErrorCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	Info(relatedId string, msg interface{}, fields ...Field)
	Infof(relatedId, format string, a ...any)
	InfoCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	InfofCtx(ctx context.Context, relatedId, format string, a ...any)
	Debug(relatedId string, msg interface{}, fields ...Field)
	Debugf(relatedId, format string, a ...any)
	DebugCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	DebugfCtx(ctx context.Context, relatedId, format string, a ...any)
	Slow(relatedId string, msg interface{}, fields ...Field)
	Slowf(relatedId, format string, a ...any)
	SlowCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	SlowfCtx(ctx context.Context, relatedId, format string, a ...any)
	Stat(relatedId string, msg interface{}, fields ...Field)
	Statf(relatedId, format string, a ...any)
	StatCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	StatfCtx(ctx context.Context, relatedId, format string, a ...any)
	Fatal(relatedId string, msg interface{}, fields ...Field)
	Fatalf(relatedId, format string, a ...any)
	FatalCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	FatalfCtx(ctx context.Context, relatedId, format string, a ...any)
	Severe(relatedId string, msg interface{}, fields ...Field)
	Severef(relatedId, format string, a ...any)
	SevereCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	SeverefCtx(ctx context.Context, relatedId, format string, a ...any)
	Alert(relatedId string, msg interface{}, fields ...Field)
	Alertf(relatedId, format string, a ...any)
	AlertCtx(ctx context.Context, relatedId string, msg interface{}, fields ...Field)
	AlertfCtx(ctx context.Context, relatedId, format string, a ...any)
}

type LoggerWriter

type LoggerWriter interface {
	////
	// Write
	//  @Description: 日志写处理
	//  @param ctx
	//
	Write(ctx context.Context, content *Content, fields ...Field)
}

type Option

type Option struct {
	// 系统的开发模式
	Mode LogMod
	// 日志标签
	Label string

	LogWriteLimit int
	// 日志的Logger对象
	LoggerWriter []LoggerWriter
}

type Options

type Options func(opt *Option)

func WithLabel

func WithLabel(label string) Options

func WithLogWriteLimit

func WithLogWriteLimit(limit int) Options

func WithLoggerWriter

func WithLoggerWriter(writers ...LoggerWriter) Options

func WithMode

func WithMode(mod LogMod) Options

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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