Help us shape the future of Go! Take the 2026 Go Developer Survey

logger

package module
v0.1.0 Latest Latest
Warning

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

Go to latest
Published: Jan 27, 2019 License: MIT Imports: 11 Imported by: 0

README

logger

Build Status Go Report Card codecov

轻量级 - 日志格式库

ps: 未经过100k+高流量线上环境验证。

特点

  1. 轻量级,代码简单,自定义度高。
  2. 支持日志等级分类, ERROR 及其以上级别单独文件, DEBUG FATAL 打印出日志调用位置,方便排查问题。
  3. 写入性能优,内存占用低。使用及其简单。
  4. 支持日志行数切割,支持日志时间间隔切割,支持保留一定时间范围的日志。
  5. 支持误删日志文件,1分钟内恢复写入。已经删除的无法恢复

使用

go get  github.com/hopingtop/logger

性能

CPU: 3.79 GHz Intel Core i5 (4core)

Mem: 16 GB 3200 MHz DDR4

SSD: 840 evo


goos: darwin
goarch: amd64
pkg: logger/benchmark
BenchmarkLogger20B-4                     1000000              1573 ns/op             160 B/op          5 allocs/op
BenchmarkLoggerContent1KB-4              1000000              2390 ns/op            3496 B/op          9 allocs/op
BenchmarkLoggerContent1KBStatic-4        1000000              2510 ns/op            2400 B/op          5 allocs/op
BenchmarkLoggerContent10KB-4              200000             26891 ns/op           32169 B/op          9 allocs/op
BenchmarkLoggerDubugContent1KB-4           20000             68247 ns/op            3544 B/op         10 allocs/op
BenchmarkParseMsg-4                      2000000               616 ns/op             184 B/op          6 allocs/op
BenchmarkLoggerParseTime-4              10000000               130 ns/op              64 B/op          2 allocs/op
PASS
ok      logger/benchmark        17.807s

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ParseTime

func ParseTime() string

ParseTime 格式化当前时间

Types

type Config

type Config struct {
	ContentMaxSize int64         // 单文件最大条数, 第一次切割行数切割,会保留原文件的行数,则文件保存行数为 oldfileSize + ContentMaxSize 默认值 10000
	QueueSize      int           // 内部写入队列大小 默认值 100000
	Rotate         int           // 保留时间范围 Rotate * RotateInterval 默认值 7
	RotateInterval time.Duration // 程序启动,切割日志时间间隔 �默认值 24*hour
	Prefix         string        // 日志前缀
	FuncCallDepth  int           // 打印调用方法位置深度 默认 2
}

Config 日志配置

type LogLevel

type LogLevel int8

LogLevel 日志等级

const (
	DEBUG LogLevel = iota
	INFO
	WARN
	ERROR
	FATAL
)

日志等级

type Logger

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

Logger 日志写入器

func NewLogger

func NewLogger(level LogLevel, filename string, cfg ...Config) (*Logger, error)

NewLogger 创建写入对象

func (*Logger) Close

func (lg *Logger) Close()

Close 释放文件资源

func (*Logger) DEBUG

func (lg *Logger) DEBUG(f string, a ...interface{})

DEBUG debug 模式 带日志调用定位

func (*Logger) ERROR

func (lg *Logger) ERROR(f string, a ...interface{})

ERROR 等级日志

func (*Logger) FATAL

func (lg *Logger) FATAL(f string, a ...interface{})

FATAL 带日志调用定位

func (*Logger) INFO

func (lg *Logger) INFO(f string, a ...interface{})

INFO 等级日志

func (*Logger) LogF

func (lg *Logger) LogF(level LogLevel, f string, a ...interface{})

LogF 写入到文件, ERROR 以上的错误写入 .wf.log 结尾文件

func (*Logger) LogOut

func (lg *Logger) LogOut(f string, a ...interface{})

LogOut 打印到系统输出

func (*Logger) Output

func (lg *Logger) Output(calldepth int, s string) error

Output logger interface

func (*Logger) SetLevel

func (lg *Logger) SetLevel(level LogLevel)

SetLevel 设置等级 >= 此等级才会正常输出

func (*Logger) WARN

func (lg *Logger) WARN(f string, a ...interface{})

WARN 等级日志

type Operation

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

Operation 日志相关操作

func NewOperation

func NewOperation(filenaem string, cfg ...Config) (*Operation, error)

NewOperation 生成具体操作日志文件的对象

func (*Operation) Close

func (op *Operation) Close() error

Close 关闭文件链接,回收相关资源, sleep 让 channel 数据写完

func (*Operation) DoRotate

func (op *Operation) DoRotate()

DoRotate 切割日志,并同时判断,保留日志的时间范围

func (*Operation) Flush

func (op *Operation) Flush()

Flush 日志消息落盘

func (*Operation) ParseMsg

func (op *Operation) ParseMsg(level LogLevel, f string, a ...interface{}) string

ParseMsg 格式化输出格式

func (*Operation) WriteMsg

func (op *Operation) WriteMsg(byts *[]byte)

WriteMsg 写入日志信息

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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