ymlog

package module
v1.1.4 Latest Latest
Warning

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

Go to latest
Published: Dec 31, 2024 License: MIT Imports: 9 Imported by: 0

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

Variables

This section is empty.

Functions

This section is empty.

Types

type FileLoggerWriter

type FileLoggerWriter struct {
	FileName string

	RotateType      RotateType
	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

type OutLoggerWriter struct {
	Out io.Writer
}

type RotateType

type RotateType int
const (
	RotateMinute RotateType = 1
	RotateHour   RotateType = 2
	RotateDay    RotateType = 3
)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

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