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

ymlog

package module
v1.0.3 Latest Latest
Warning

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

Go to latest
Published: Apr 13, 2023 License: MIT Imports: 10 Imported by: 1

README

ymlog Build Status GoDoc

ymlog is golang high-performance asynchronous logging framework

Installation

go get github.com/maczam/ymlog

Quick Start

log file


    func TestRoteMin2(t *testing.T) {
        ///file log
        logger := NewLogger(&FileLoggerWriter{
            ChanBufferLength: 10240,
            FileName:         "/pdata/log/test/example_min2_%Y%M%D-%H%m.log",
            RotateDuration:   time.Second * 2,
            MaxSizeByteSize:  1024 * 1024,
            WriteFileBuffer:  10,
        },
        )
        logger.InfoString("init NewLogger log")
        
        for i := 0; i < 100; i++ {
            time.Sleep(time.Microsecond * 10)
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
        }
        
        fmt.Println("xxxxxxxxxxxxxxxxxx111111111111111")
        
        time.Sleep(time.Second * 3)
        
        fmt.Println("xxxxxxxxxxxxxxxxxx1111111111111112222")
        for i := 0; i < 100; i++ {
            time.Sleep(time.Microsecond * 10)
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
        }
        fmt.Println("xxxxxxxxxxxxxxxxxx111111111111111333333")
        
        time.Sleep(time.Second * 3)
        fmt.Println("xxxxxxxxxxxxxxxxxx111111111111111444444")
        for i := 0; i < 100; i++ {
            time.Sleep(time.Microsecond * 10)
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
            logger.InfoString(time.Now().String())
        }
        fmt.Println("xxxxxxxxxxxxxxxxxx11111111111111155555")
        
        time.Sleep(time.Second * 100)

    }
  	

log console

	///console
	logger1 := NewLogger(&ConsoleLoggerWriter{},
	)
	logger1.InfoString("init log")

Benchmark test file

goos: windows
goarch: amd64
pkg: benchmarks
cpu: AMD Ryzen 7 4800H with Radeon Graphics
BenchmarkWithString
BenchmarkWithString/Zap
BenchmarkWithString/Zap-16                156559              8015 ns/op
BenchmarkWithString/YmLog-1024
BenchmarkWithString/YmLog-1024-16        1084400              1198 ns/op
BenchmarkWithString/YmLog-2048
BenchmarkWithString/YmLog-2048-16        1413888               884.2 ns/op
BenchmarkWithString/YmLog-byte-1024
BenchmarkWithString/YmLog-byte-1024-16           1000000              1480 ns/op
BenchmarkWithString/YmLog-byte-2048
BenchmarkWithString/YmLog-byte-2048-16           1000000              1024 ns/op
BenchmarkWithString/Zerolog
BenchmarkWithString/Zerolog-16                     12501             96929 ns/op

PASS

Documentation

Index

Constants

View Source
const DEFAULT_LOG_BUFFER_LENGTH = 2048
View Source
const DEFAULT_Rotate_Duration = time.Hour * 24

Variables

This section is empty.

Functions

This section is empty.

Types

type FileLoggerWriter

type FileLoggerWriter struct {
	FileName string

	RotateDuration  time.Duration
	MaxSizeByteSize int64 //byte

	//buffer
	ChanBufferLength int
	WriteFileBuffer  int
	// contains filtered or unexported fields
}

type Logger

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

the associated LogWriter.

func NewLogger

func NewLogger(logWriter LoggerWrite) *Logger

*

new Logger

func (*Logger) Close

func (log *Logger) Close()

func (*Logger) Info

func (log *Logger) Info(arg0 *string)

func (*Logger) InfoBytes

func (log *Logger) InfoBytes(arg0 []byte)

func (*Logger) InfoString

func (log *Logger) InfoString(arg0 string)

type LoggerWrite

type LoggerWrite interface {
	// contains filtered or unexported methods
}

type OutLoggerWriter added in v1.0.2

type OutLoggerWriter struct {
	Out io.Writer
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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