阅读logrus文档
This commit is contained in:
@@ -43,6 +43,14 @@
|
|||||||
- [常用方法](#常用方法)
|
- [常用方法](#常用方法)
|
||||||
- [NumField](#numfield)
|
- [NumField](#numfield)
|
||||||
- [Field](#field)
|
- [Field](#field)
|
||||||
|
- [logrus](#logrus)
|
||||||
|
- [import](#import)
|
||||||
|
- [Log Level](#log-level)
|
||||||
|
- [Redirect Output](#redirect-output)
|
||||||
|
- [log on console](#log-on-console)
|
||||||
|
- [log messages in log file](#log-messages-in-log-file)
|
||||||
|
- [将日志同时输出到log file和console](#将日志同时输出到log-file和console)
|
||||||
|
- [展示日志输出行数](#展示日志输出行数)
|
||||||
- [syntax](#syntax)
|
- [syntax](#syntax)
|
||||||
- [iota](#iota)
|
- [iota](#iota)
|
||||||
|
|
||||||
@@ -869,6 +877,123 @@ var v interface{} = Addr{FrmIp: "1.2.3.4", DstIp: "7.8.9.10"}
|
|||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## logrus
|
||||||
|
### import
|
||||||
|
logrus可以通过如下方式被引入:
|
||||||
|
```go
|
||||||
|
import (
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
)
|
||||||
|
```
|
||||||
|
### Log Level
|
||||||
|
logrus提供了不同的日志级别,从低到高依次为:
|
||||||
|
- Trace
|
||||||
|
- Debug
|
||||||
|
- Info
|
||||||
|
- Warn
|
||||||
|
- Error
|
||||||
|
- Fatal
|
||||||
|
- Panic
|
||||||
|
|
||||||
|
可以通过`logrus.SetLevel`来设置日志的输出级别
|
||||||
|
```go
|
||||||
|
logrus.SetLevel(logrus.TraceLevel)
|
||||||
|
logrus.SetLevel(logrus.DebugLevel)
|
||||||
|
logrus.SetLevel(logrus.InfoLevel)
|
||||||
|
logrus.SetLevel(logrus.WarnLevel)
|
||||||
|
logrus.SetLevel(logrus.ErrorLevel)
|
||||||
|
logrus.SetLevel(logrus.FatalLevel)
|
||||||
|
```
|
||||||
|
> 当SetLevel将日志输出级别设置为指定级别时,日志只会输出该级别和该级别之上的内容。
|
||||||
|
>
|
||||||
|
> 例如,当通过SetLevel将日志级别设置为Debug时,Trace级别的日志不会被输出
|
||||||
|
|
||||||
|
### Redirect Output
|
||||||
|
logrus支持三种方式来打印日志信息:
|
||||||
|
- 将日志信息输出到console
|
||||||
|
- 将日志信息输出到log file
|
||||||
|
- 将日志信息输出到console和log file
|
||||||
|
|
||||||
|
#### log on console
|
||||||
|
如果想要将日志输出到`os.Stdout`或`os.Stderr`,可以按如下方式进行配置
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"os"
|
||||||
|
|
||||||
|
log "github.com/sirupsen/logrus"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
// Output to stdout instead of the default stderr
|
||||||
|
log.SetOutput(os.Stdout)
|
||||||
|
|
||||||
|
// Only log the debug severity or above
|
||||||
|
log.SetLevel(log.DebugLevel)
|
||||||
|
|
||||||
|
log.Info("Info message")
|
||||||
|
log.Warn("Warn message")
|
||||||
|
log.Error("Error message")
|
||||||
|
log.Fatal("Fatal message")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
#### log messages in log file
|
||||||
|
可以通过`logrus.SetOutput`配置将日志输出到文件中,示例如下:
|
||||||
|
```go
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func GetLogger(dir string, filename string) (logger *logrus.Logger, file *os.File, err error) {
|
||||||
|
if err = os.MkdirAll(dir, 0750); err!=nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logfile := filepath.Join(dir, filename)
|
||||||
|
file, err = os.OpenFile(logfile, os.O_TRUNC|os.O_CREATE, 0640)
|
||||||
|
if err != nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
logger = logrus.New()
|
||||||
|
logger.SetLevel(logrus.InfoLevel)
|
||||||
|
logger.SetOutput(file)
|
||||||
|
logger.SetFormatter(&logrus.JSONFormatter{})
|
||||||
|
logger.SetReportCaller(true)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
logger, file, err := GetLogger("./log/", "app.log")
|
||||||
|
if err!=nil {
|
||||||
|
panic(any(err))
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
logger.Info("Ciallo~")
|
||||||
|
}
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
#### 将日志同时输出到log file和console
|
||||||
|
如果想要将日志同时输出到log file和console,可以通过`io.MultiWrtier`来进行实现:
|
||||||
|
```go
|
||||||
|
logger.SetOutput(io.MultiWriter(file, os.Stdout))
|
||||||
|
```
|
||||||
|
|
||||||
|
### 展示日志输出行数
|
||||||
|
如果在输出日志要,要同时输出打印日志代码的行数,可以通过如下设置
|
||||||
|
```go
|
||||||
|
// Only log the debug severity or above
|
||||||
|
log.SetLevel(log.DebugLevel)
|
||||||
|
```
|
||||||
|
其输出样式如下所示:
|
||||||
|
```go
|
||||||
|
{"file":"D:/Workspace/GolangWorkspace/demo/logrus/logrus.go:33","func":"main.main","level":"info","msg":"Ciallo~","time":"2025-01-14T12:59:12+08:00"}
|
||||||
|
```
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user