logx

package module
v0.0.5 Latest Latest
Warning

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

Go to latest
Published: Jan 10, 2024 License: MIT Imports: 14 Imported by: 17

README

logx

一个简单又好用的go日志库

特性

  1. API简单,可快速上手使用
  2. 可设置日志输出格式
  3. 可定义日志输出等级
  4. 可定义是否颜色输出
  5. 可实现自己的 io.writer

安装

go get github.com/zituocn/logx

1、在控制台打印日志

1.1 快速上手

快速使用,使用默认的配置

package main

import (
	"github.com/zituocn/logx"
)

func main() {
	logx.Info("info")
	logx.Debug("debug")
	logx.Error("error")
	logx.Notice("notice")
	logx.Warn("warn")
	logx.Panic("panic")
	logx.Fatal("fatal")
}

输出

1.2 支持printf式的格式化
package main

import (
	"time"

	"github.com/zituocn/logx"
)

func main() {
	logx.Infof("这是一个字串: %s", time.Now())
	logx.Debugf("这是一个对象: %#v", time.Now())
}

输出

2022/11/23 21:16:49.507 [INFO] main.go:10: 这是一个字串: 2022-11-23 21:16:49.507432 +0800 CST m=+0.000194033
2022/11/23 21:16:49.507 [DEBU] main.go:11: 这是一个对象: time.Date(2022, time.November, 23, 21, 16, 49, 507724000, time.Local)
1.3 自定义配置

可以配置输出格式、样式等

package main

import (
	"os"

	"github.com/zituocn/logx"
)

func init() {
	logx.SetWriter(os.Stdout).
		SetColor(true).
		SetFormat(logx.LogFormatJSON).
		SetPrefix("demo")
}

func main() {
	logx.Info("info str")
	logx.Debug("debug str")
}

输出

{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:17","msg":"info str"}
{"prefix":"demo","time":"2022/11/23 20:25:6.166","level":"","file":"main.go:18","msg":"debug str"}
参数说明
  • logx.SetWriter -> 设置输出到哪一个io.writer
  • SetColor -> 设置是否输出颜色
  • SetFormat(logx.LogFormatJSON) -> 日志输出为json格式
  • SetPrefix -> 设置日志前缀

2. 同时写日志到文件

2.1 使用 logxFileWriter
package main

import (
	"io"
	"os"
	"time"

	"github.com/zituocn/logx"
)

func init() {
	logx.SetWriter(io.MultiWriter(
		os.Stdout,
		logx.NewFileWriter(logx.FileOptions{
			StorageType: logx.StorageTypeDay,
			MaxDay:      7,
			Dir:         "./logs",
			Prefix:      "web",
		}))).SetColor(false)
}

func main() {
	logx.Infof("这是一个字串: %s", time.Now())
	logx.Debugf("这是一个对象: %#v", time.Now())
}

代码说明

  1. logx.SetWriter 时,使用了 io.MultiWriter
  2. 把日志输出到了os.Stdoutlogx.FileWriter
  3. 设置不显示颜色 SetColor(false)
2.2 自己设计一个io.Writer

可以自己设计一个实现了 io.Writer ,由 logx.SetWriter 传入,可以是文件或网络。

package main

import (
	"github.com/zituocn/logx"
	"io"
	"os"
	"time"
)

func init() {
	myWriter, err := os.OpenFile("./my_log_file.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0664)
	if err != nil {
		panic(err)
	}
	logx.SetWriter(io.MultiWriter(
		os.Stdout,
		myWriter,
	)).SetColor(false)
}

func main() {
	logx.Infof("这是一个字串: %s", time.Now())
	logx.Debugf("这是一个对象: %#v", time.Now())
}

Documentation

Index

Constants

View Source
const (
	LogDate = 1 << iota

	LogTime

	LogMicroSeconds

	LogLongFile

	LogShortFile

	LogModule

	LogLevel
)
View Source
const (
	LevelTest = iota
	LevelDebug
	LevelInfo
	LevelNotice
	LevelWarn
	LevelError
	LevelPanic
	LevelFatal
)

Variables

View Source
var (
	// StdFlags std flags
	StdFlags = LogDate | LogMicroSeconds | LogShortFile | LogLevel
)

Functions

func Debug

func Debug(v ...interface{})

Debug debug v

func Debugf

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

func Error

func Error(v ...interface{})

Error error v

func Errorf

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

func Fatal

func Fatal(v ...interface{})

Fatal Fatal v

func Fatalf

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

func Info

func Info(v ...interface{})

Info info v

logx.Info("test")

func Infof

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

Infof need format

logy.Infof("user :%s",user.Username)

func Notice

func Notice(v ...interface{})

Notice notice v

func Noticef

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

func Panic

func Panic(v ...interface{})

Panic Panic v

func Panicf

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

func Warn

func Warn(v ...interface{})

Warn warn v

func Warnf

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

Types

type DateFormat added in v0.0.2

type DateFormat int

LogFormat logformat enum

const (
	LongDateFormat DateFormat = iota
	ShortDateFormat
)

type FileFormat added in v0.0.2

type FileFormat int

LogFormat logformat enum

const (
	LongFileFormat FileFormat = iota

	ShortFileFormat
)

type FileInfo

type FileInfo struct {
	Name    string
	ModTime time.Time
	Size    int64
}

FileInfo file info

type FileOptions

type FileOptions struct {

	// StorageType 存储的时间类型
	StorageType StorageType

	// MaxDay 日志最大保存天数
	MaxDay int

	// Dir 日志保存目录
	Dir string

	// Prefix 文件名前缀
	Prefix string
	// contains filtered or unexported fields
}

FileOptions 文件存储选项

type FileWriter

type FileWriter struct {
	FileOptions
	// contains filtered or unexported fields
}

FileWriter 文件存储实现

func NewFileWriter

func NewFileWriter(opts ...FileOptions) *FileWriter

func (*FileWriter) Write

func (w *FileWriter) Write(p []byte) (n int, err error)

type HttpWriter added in v0.0.2

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

func NewHttpWriter added in v0.0.2

func NewHttpWriter(url string) *HttpWriter

func (*HttpWriter) Write added in v0.0.2

func (w *HttpWriter) Write(p []byte) (n int, err error)

type LogContent

type LogContent struct {
	Prefix   string `json:"prefix"`
	Time     string `json:"time"`
	Level    string `json:"level"`
	File     string `json:"file"`
	Msg      string `json:"msg"`
	Color    bool   `json:"-"`
	LevelInt int    `json:"-"`
}

func (*LogContent) Json

func (cc *LogContent) Json() []byte

Json LogContent to json

returns []byte

func (*LogContent) Text

func (cc *LogContent) Text() []byte

Text LogContent to Text

returns []byte

type LogFormat

type LogFormat int

LogFormat logformat enum

const (

	// LogFormatText text or default format
	LogFormatText LogFormat = iota

	//LogFormatJSON json format
	LogFormatJSON
)

type LogOptions added in v0.0.2

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

type Logger

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

Logger logger struct

call logx.New() returns *Logger

func New

func New(writer ...io.Writer) *Logger

New logx.New(...)

returns *Logger

func SetColor

func SetColor(color bool) *Logger

SetColor returns std

func SetWriter

func SetWriter(w io.Writer) *Logger

func (*Logger) Debug

func (log *Logger) Debug(format string, v ...interface{})

func (*Logger) Error

func (log *Logger) Error(format string, v ...interface{})

func (*Logger) Fatal

func (log *Logger) Fatal(format string, v ...interface{})

func (*Logger) GetCallDepth

func (log *Logger) GetCallDepth() int

func (*Logger) Info

func (log *Logger) Info(format string, v ...interface{})

func (*Logger) Notice

func (log *Logger) Notice(format string, v ...interface{})

func (*Logger) Panic

func (log *Logger) Panic(format string, v ...interface{})

func (*Logger) SetCallDepth

func (log *Logger) SetCallDepth(depth int) *Logger

func (*Logger) SetCallDepthPlus

func (log *Logger) SetCallDepthPlus() *Logger

func (*Logger) SetColor

func (log *Logger) SetColor(color bool) *Logger

func (*Logger) SetFlag

func (log *Logger) SetFlag(flag int) *Logger

SetFlag set *Logger's flag returns *Logger

func (*Logger) SetFormat

func (log *Logger) SetFormat(logFormat LogFormat) *Logger

SetFormat set log format

text or json or other

func (*Logger) SetLevel

func (log *Logger) SetLevel(level int) *Logger

func (*Logger) SetPrefix

func (log *Logger) SetPrefix(prefix string) *Logger

SetPrefix set *Logger's prefix

returns *Logger

func (*Logger) SetWriter

func (log *Logger) SetWriter(w io.Writer) *Logger

SetWriter set io.writer

returns *Logger

func (*Logger) Warn

func (log *Logger) Warn(format string, v ...interface{})

type StorageType

type StorageType int
const (

	// StorageTypeMinutes 按分钟存储
	StorageTypeMinutes StorageType = iota

	// StorageTypeHour 按小时存储
	StorageTypeHour

	// StorageTypeDay 按天存储
	StorageTypeDay

	// StorageTypeMonth 按月存储
	StorageTypeMonth
)

Jump to

Keyboard shortcuts

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