阅读logrus文档

This commit is contained in:
asahi
2025-01-14 13:03:09 +08:00
parent 148c94e386
commit 4fe88021e4

View File

@@ -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"}
```