在配置 Golang 記錄器以在代碼中顯示位置時(如doc 中的代碼段),訊息未對齊。
例如:
$ go run .
main.go:11: From main
afilewithalongname.go:4: From function
如何垂直對齊“From main”和“From function”訊息?
下面是 MCVE。
檔案main.go:
package main
import(
"log"
"os"
)
var logger = log.New(os.Stderr, "", log.Lshortfile)
func main() {
logger.Println("From main")
SomeFunction()
}
檔案afilewithalongname.go:
package main
func SomeFunction() {
logger.Println("From function")
}
檔案go.mod:
module testlog
go 1.17
uj5u.com熱心網友回復:
您對標準日志包沒有太多控制權。如果您只是想寫入標準輸出,則可以使用fmt.Printf它來填充部分字串。可以通過函式獲取呼叫函式的檔案名runtime.Caller。得到類似的東西:
func log(msg string) {
_, file, no, ok := runtime.Caller(1)
if ok {
fmt.Printf("0s:%d: %s\n", file, no, msg)
}
}
這0s部分意味著我們會將字串填充為 30 個字符寬,該值將取決于您的最大檔案大小。
我還可以推薦一個專門的日志庫,比如logrus,它在我們的日志格式化方式和寫入位置等方面為您提供了更大的靈活性。
uj5u.com熱心網友回復:
雖然log標準庫中的包有一些標志,例如Ldate和Lshortfile,但在列印到控制臺或檔案時沒有影響垂直對齊的選項。
您需要從標準庫之外選擇一個記錄器。當輸出設備是 TTY 時,logrus的默認配置將執行一些垂直對齊。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/352560.html
上一篇:領事健康檢查(所有服務檢查失敗)
