<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 使用log包記錄錯誤 在應用出現異常或意外情況時,日志會顯得無比重要。如果提供系統級別的日志,在代碼的關鍵位置記錄相關信息,也有助于在開發期間快速調試問題。太多的日志記錄會導致很難找到有用的東西,但沒有足夠的日志記錄可能在系統崩潰時無法追尋其根本原因。本節將演示如何使用Go標準庫中的log包。 ### 實踐 1. 獲取第三方庫: ``` go get github.com/pkg/errors/ ``` 1. 獲取第三方庫: ``` go get github.com/pkg/errors/ ``` 2. 建立log.go: ``` package log import ( "bytes" "fmt" "log" ) // 對日志進行設置 func Log() { // logger會寫入bytes.Buffer類型的數據 buf := bytes.Buffer{} // 第二個參數是前綴最后一個參數是關于選項 // 配置選項可以用邏輯或符號組合起來 logger := log.New(&buf, "logger: ", log.Lshortfile|log.Ldate) logger.Println("test") logger.SetPrefix("new logger: ") logger.Printf("you can also add args(%v) and use Fataln to log and crash", true) fmt.Println(buf.String()) } ``` 3. 建立error.go: ``` package log import "github.com/pkg/errors" import "log" // OriginalError返回錯誤的原始信息 func OriginalError() error { return errors.New("error occurred") } // PassThroughError 調用OriginalError并將其封裝 func PassThroughError() error { err := OriginalError() // 無需檢查錯誤,因為使用該庫時此操作適用于nil return errors.Wrap(err, "in passthrougherror") } // FinalDestination處理錯誤而不傳遞它 func FinalDestination() { err := PassThroughError() if err != nil { // 將任何產生的意外記錄到日志中 log.Printf("an error occurred: %s\n", err.Error()) return } } ``` 4. 建立main.go: ``` package main import ( "fmt" "github.com/agtorre/go-cookbook/chapter4/log" ) func main() { fmt.Println("basic logging and modification of logger:") log.Log() fmt.Println("logging 'handled' errors:") log.FinalDestination() } ``` 5. 這會輸出: ``` basic logging and modification of logger: logger: 2018/07/23 log.go:18: test new logger: 2018/07/23 log.go:22: you can also add args(true) and use Fataln to log and crash logging 'handled' errors: 2018/07/23 11:37:07 an error occurred: in passthrougherror: error occurred ``` ### 說明 你可以使用log.NewLogger()初始化日志并傳遞它,或直接調用log包記錄消息。 這種操作方式并不優雅,因為你需要傳遞過去一堆變量,這是令人困惑并難以理解的。下一節,我們探討如何使用更加靈活的方式設置日志。 * * * * 學識淺薄,錯誤在所難免。歡迎在群中就本書提出修改意見,以饗后來者,長風拜謝。 Golang中國(211938256) beego實戰(258969317) Go實踐(386056972)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看