阅读logrus文档
This commit is contained in:
@@ -43,6 +43,14 @@
|
||||
- [常用方法](#常用方法)
|
||||
- [NumField](#numfield)
|
||||
- [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)
|
||||
- [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