第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 golang 中捕獲 stdErr 輸出

在 golang 中捕獲 stdErr 輸出

Go
喵喵時光機 2023-07-04 19:13:44
我寫了一個go程序來監(jiān)控一些MySQL數(shù)據(jù)庫。在下面的示例中,我只是顯示“連接成功!” 連接成功時顯示“連接錯誤:”,失敗時顯示錯誤消息。package mainimport (    "database/sql"    "fmt"    _ "github.com/go-sql-driver/mysql")func main() {    err := mysqlConnect()    if err != nil {        fmt.Println("Connection Error:", err)    } else {        fmt.Println("Connection Success!")    }}func mysqlConnect() error {    db, err := sql.Open("mysql", "myuser:mypwd@tcp(10.2.0.3:3306)/mysql")    if err != nil {        return err    }    defer db.Close()    err = db.Ping()    if err != nil {        return err    }    return nil}這按預(yù)期工作,但在某些情況下,執(zhí)行 db.Ping() 時會出現(xiàn)一些錯誤消息并顯示到 stdErr:例如:$ go run main.go[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialogConnection Error: this authentication plugin is not supported最后一行是我預(yù)期的消息,但是調(diào)用 db.Ping() 時會顯示上一行。我想捕獲/隱藏此消息[mysql] 2019/07/22 18:01:59 auth.go:293: unknown auth plugin:dialog,因為我已經(jīng)收到一條干凈的錯誤消息,我可以按照我的意愿處理它(顯示或不顯示)。如何防止出現(xiàn)此類錯誤消息(我的意思是在代碼中,而不是在調(diào)用時)?
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經(jīng)驗 獲得超5個贊

您的自定義記錄器可以執(zhí)行對您的應(yīng)用程序有意義的任何操作,包括“吞掉”這些日志記錄語句,并且在沒有錯誤的情況下不顯示任何內(nèi)容。


要回答問題的標題,您可以os.Stderr使用以下內(nèi)容進行捕獲:

func doPrint() {

? ? fmt.Fprintf(os.Stderr, "output")

}


func main() {

? ? old := os.Stderr

? ? r, w, _ := os.Pipe()

? ? os.Stderr = w


? ? doPrint()


? ? w.Close()

? ? var buf bytes.Buffer

? ? io.Copy(&buf, r)

? ? os.Stderr = old


? ? fmt.Println("Captured:", buf.String())

}


查看完整回答
反對 回復(fù) 2023-07-04
  • 1 回答
  • 0 關(guān)注
  • 142 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號