| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
jopen
9年前发布

BLog4go 高性能日志库

Introduction

BLog4go is an efficient logging library written in the Go programming language, providing logging hook, log rotate, filtering and formatting log message.

BLog4go 是高性能日志库。创新地使用“边解析边输出”方法进行日志输出,同时支持回调函数、日志淘汰和配置文件。可以解决高并发,调用日志函数频繁的情境下,日志库造成的性能问题。

Features

  • Partially write to the bufio.Writer as soon as posible while formatting message to improve performance
  • Support different logging output file for different logging level
  • Support configure with files in xml format
  • Configurable logrotate strategy
  • Call user defined hook in asynchronous mode for every logging action
  • Adjustable message formatting
  • Configurable logging behavier when looging on the fly without restarting
  • Suit configuration to the environment when logging start
  • Try best to get every done in background
  • File writer can be configured according to given config file
  • Different output writers
    • Console writer
    • File writer
    • Socket writer
    </li> </ul>

    Quick-start

    package main    import (      log "github.com/YoungPioneers/blog4go"      "fmt"      "os"  )    // optionally set user defined hook for logging  type MyHook struct {      something string  }    // when log-level exceed level, call the hook  // level is the level associate with that logging action.  // message is the formatted string already written.  func (self *MyHook) Fire(level log.Level, message string) {      fmt.Println(message)  }    func main() {      // init a file write using xml config file      err := log.NewFileWriterFromConfigAsFile("config.xml")      if nil != err {          fmt.Println(err.Error())          os.Exit(1)      }      defer log.Close()        // initialize your hook instance      hook := new(MyHook)      log.SetHook(hook) // writersFromConfig can be replaced with writers      log.SetHookLevel(log.INFO)        // optionally set output colored      log.SetColored(true)        log.Debugf("Good morning, %s", "eddie")      log.Warn("It's time to have breakfast")    }

    config.xml

    <blog4go minlevel="info">      <filter levels="trace">          <rotatefile path="trace.log" type="time"></rotatefile>      </filter>      <filter levels="debug,info" colored="true">          <file path="debug.log"></file>      </filter>      <filter levels="error,critical">          <rotatefile path="error.log" type="size" rotateSize="50000000" rotateLines="8000000"></rotatefile>      </filter>  </blog4go>

    Installation

    If you don't have the Go development environment installed, visit the Getting Started document and follow the instructions. Once you're ready, execute the following command:

    go get -u github.com/YoungPioneers/blog4go

    Benchmark

    I do some benchmark on a HDD disk comparing amoung fmt,blog4go,seelog,logrus. Benchmark Code

    BenchmarkBlog4goSingleGoroutine-4                    1000000          1087 ns/op  BenchmarkBlog4goMultiGoroutine-4                       30000         56569 ns/op  BenchmarkFmtFormatSingleGoroutine-4                   300000          5104 ns/op  BenchmarkFmtFormatWithTimecacheSingleGoroutine-4      300000          4256 ns/op  BenchmarkFmtFormatWithTimecacheMultiGoroutine-4         3000        509579 ns/op  BenchmarkLogrusSingleGoroutine-4                      100000         13757 ns/op  BenchmarkLogrusWithTimecacheSingleGoroutine-4         100000         12752 ns/op  BenchmarkLogrusWithTimecacheMultiGoroutine-4            1000       2049809 ns/op  BenchmarkSeelogSingleGoroutine-4                       50000         32846 ns/op  BenchmarkSeelogMultiGoroutine-4                         1000       3191334 ns/op

    It shows that blog4go can write log very fast, especially in situation with multi goroutines running at the same time~

    Documentation

    TODO

    Examples

    Full examples please view EXAMPLES

    Changelog

    CHANGELOG

    项目地址: https://github.com/YoungPioneers/blog4go

 本文由用户 jopen 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1457532070718.html
日志处理 blog4go: Partial Logger