mirror of
https://github.com/eiblog/eiblog.git
synced 2026-02-07 07:12:27 +08:00
150 lines
3.7 KiB
Markdown
150 lines
3.7 KiB
Markdown
# Logd
|
||
高性能日志系统:每日24时自动打包前一天数据,自动删除过期数据(30天),自动邮件告警。
|
||
|
||
#### Bechmark
|
||
```
|
||
BenchmarkLogFileChan-8 500000 2265 ns/op
|
||
BenchmarkLogFile-8 300000 4393 ns/op
|
||
BenchmarkStandardFile-8 1000000 2216 ns/op
|
||
|
||
BenchmarkLogFileChanMillion-8 1000000 2319 ns/op
|
||
BenchmarkLogFileMillion-8 1000000 4397 ns/op
|
||
BenchmarkStandardFileMillion-8 1000000 2232 ns/op
|
||
```
|
||
|
||
#### Print Level
|
||
```
|
||
Ldebug = 1 << iota //
|
||
Linfo //
|
||
Lwarn //
|
||
Lerror //
|
||
Lfatal //
|
||
|
||
logd.Printf()
|
||
logd.Print()
|
||
logd.Debugf()
|
||
logd.Debug()
|
||
logd.Infof()
|
||
logd.Info()
|
||
logd.Warnf()
|
||
logd.Warn()
|
||
logd.Errorf()
|
||
logd.Error()
|
||
logd.Fatalf()
|
||
logd.Fatal()
|
||
```
|
||
5种日志等级,12种打印方法,完全理解你记录日志的需求。
|
||
|
||
```
|
||
Ldebug < Linfo < Lwarn < Lerror < Lfatal
|
||
```
|
||
通过`SetLevel()`方法设置,如:logd.SetLevel(Lwarn),系统只会打印大于等于Lwarn的日志。
|
||
|
||
> 注意:logd.Printf() 和 logd.Print() 不论等级为什么都会输出,请悉知。
|
||
|
||
#### Print Option
|
||
系统提供多种格式输出选项:
|
||
```
|
||
Lasync // 异步输出日志
|
||
Ldate // like 2006/01/02
|
||
Ltime // like 15:04:05
|
||
Lmicroseconds // like 15:04:05.123123
|
||
Llongfile // like /a/b/c/d.go:23
|
||
Lshortfile // like d.go:23
|
||
LUTC // 时间utc输出
|
||
Ldaily // 按天归档
|
||
|
||
默认提供:
|
||
LstdFlags // 2006/01/02 15:04:05.123123, /a/b/c/d.go:23
|
||
```
|
||
|
||
#### 使用方法
|
||
1、默认方式
|
||
|
||
默认方式使用以下配置选项:
|
||
```
|
||
// 2006/01/02 15:04:05.123123, /a/b/c/d.go:23
|
||
Lall = Ldebug | Linfo | Lwarn | Lerror | Lfatal
|
||
LstdFlags = Lall | Ldate | Lmicroseconds | Lshortfile
|
||
```
|
||
这里会打印所有等级日志,打印日志格式为`2006/01/02 15:04:05.123123, /a/b/c/d.go:23`
|
||
|
||
可以通过`logd.SetLevel(level)`方式调整日志等级。`logd.SetOutput(writer)`输出日志到别的地方。例子:
|
||
```
|
||
package main
|
||
|
||
import (
|
||
"fmt"
|
||
"os"
|
||
|
||
"github.com/deepzz0/logd"
|
||
)
|
||
|
||
func main() {
|
||
logd.Printf("Printf: foo\n")
|
||
logd.Print("Print: foo")
|
||
|
||
logd.Debugf("Debugf: foo\n")
|
||
logd.Debug("Debug: foo")
|
||
|
||
logd.Errorf("Errorf: foo\n")
|
||
logd.Error("Error: foo")
|
||
|
||
// 改变输出等级
|
||
logd.SetLevel(logd.Lerror)
|
||
// 不论等级如何都会输出
|
||
fmt.Println("----- 改变日志等级为Lerror -----")
|
||
logd.Printf("Printf: foo\n")
|
||
logd.Print("Print: foo")
|
||
|
||
logd.Debugf("Debugf: foo\n")
|
||
logd.Debug("Debug: foo")
|
||
|
||
logd.Errorf("Errorf: foo\n")
|
||
logd.Error("Error: foo")
|
||
|
||
fmt.Println("----- 日志等级为Lerror并写入到test.log中 -----")
|
||
f, err := os.Create("./test.log")
|
||
if err != nil {
|
||
panic(err)
|
||
}
|
||
defer f.Close()
|
||
|
||
logd.SetOutput(f)
|
||
|
||
logd.Printf("Printf: foo\n")
|
||
logd.Print("Print: foo")
|
||
|
||
logd.Debugf("Debugf: foo\n")
|
||
logd.Debug("Debug: foo")
|
||
|
||
logd.Errorf("Errorf: foo\n")
|
||
logd.Error("Error: foo")
|
||
}
|
||
```
|
||
输出如下:
|
||

|
||
|
||
|
||
1、自定义配置
|
||
推荐需要将日志保存下来的用户使用。
|
||
|
||
```
|
||
Flags := Lwarn | Lerror | Lfatal | Ldate | Ltime | Lshortfile | Ldaily | Lasync
|
||
|
||
f, _ := os.OpenFile("testdata/onlyfile.log", os.O_CREATE|os.O_APPEND|os.O_WRONLY, 0666)
|
||
log := New(LogOption{
|
||
Out: f,
|
||
Flag: Flags,
|
||
LogDir: "testdata",
|
||
ChannelLen: 1000,
|
||
})
|
||
```
|
||
|
||
* 输出日志等级:Lwarn | Lerror | Lfatal
|
||
* 输出日志格式:Ldate | Ltime | Lshortfile
|
||
* 按日归档:Ldaily
|
||
* 异步输出:Lasync
|
||
|
||
它会将每天的日志,采用 gzip 压缩,并保留 30 天以内的日志。自动删除 30 以前的日志。
|