<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                import "log" log包實現了簡單的日志服務。本包定義了Logger類型,該類型提供了一些格式化輸出的方法。本包也提供了一個預定義的“標準”Logger,可以通過輔助函數Print[f|ln]、Fatal[f|ln]和Panic[f|ln]訪問,比手工創建一個Logger對象更容易使用。 Logger會打印每條日志信息的日期、時間,默認輸出到標準錯誤。 Fatal系列函數會在寫入日志信息后調用os.Exit(1)。 Panic系列函數會在寫入日志信息后panic。 Print 示例: ~~~ package main import "log" func main() { log.Print("this is log print test", "\n") log.Printf("this is %s", "log printf test\n") log.Printf("this is log println test") } ~~~ 運行結果: ~~~ 2018/04/12 14:03:37 this is log print test 2018/04/12 14:03:37 this is log printf test 2018/04/12 14:03:37 this is log println test ~~~ 對于 log.Fatal 接口,會先將日志內容打印到標準輸出,接著調用系統的 os.exit(1) 接口,退出程序并返回狀態 1 。 但是有一點需要注意,由于是直接調用系統接口退出,defer函數不會被調用。 Fatal 示例: ~~~ package main import ( "fmt" "log" ) func main() { defer func() { fmt.Println("first defer") }() log.Fatal("this is log fatal test", "\n") log.Fatalf("this is %s", "log fatalf test\n") log.Fatalln("this is log fatalln test\n") defer func() { fmt.Println("second defer") }() } ~~~ 運行結果: ~~~ 2018/04/12 14:12:01 this is log fatal test exit status 1 ~~~ Panic 示例: ~~~ package main import ( "fmt" "log" ) func main() { defer func() { fmt.Println("first defer") if err := recover(); err != nil { fmt.Println(err) } }() log.Panic("this is log panic") defer func() { fmt.Println("second defer") }() } ~~~ 運行結果: ~~~ 2018/04/12 14:36:02 this is log panic first defer this is log panic ~~~ 生成日志(log)文件 ~~~ func New(out io.Writer, prefix string, flag int) *Logger /* New創建一個Logger。參數out設置日志信息寫入的目的地。 參數prefix會添加到生成的每一條日志前面。參數flag定義日志的屬性(時間、文件等等)。 */ func (l *Logger) SetPrefix(prefix string) // SetPrefix設置logger的輸出前綴。 func (l *Logger) SetFlags(flag int) // SetFlags設置logger的輸出選項。 const ( // 字位共同控制輸出日志信息的細節。不能控制輸出的順序和格式。 // 在所有項目后會有一個冒號:2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message Ldate = 1 << iota // 日期:2009/01/23 Ltime // 時間:01:23:23 Lmicroseconds // 微秒分辨率:01:23:23.123123(用于增強Ltime位) Llongfile // 文件全路徑名+行號: /a/b/c/d.go:23 Lshortfile // 文件無路徑名+行號:d.go:23(會覆蓋掉Llongfile) LstdFlags = Ldate | Ltime // 標準logger的初始值 ) // 這些選項定義Logger類型如何生成用于每條日志的前綴文本。 ~~~ 代碼實力: ~~~ package main import ( "fmt" "log" "os" ) func Debug(logName string) { logFile, err := os.OpenFile(logName, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) if err != nil { fmt.Printf("create ./test.log err : %v\n", err) } if logFile != nil { defer func(file *os.File) { file.Close() }(logFile) } debugLog := log.New(logFile, "[Debug]", log.Ldate) debugLog.SetPrefix("[Debug]") debugLog.SetFlags(log.Lshortfile) debugLog.Println("this is Debug log") } func Waring(logName string) { logFile, err := os.OpenFile(logName, os.O_CREATE|os.O_APPEND|os.O_RDWR, 0666) if err != nil { fmt.Printf("create ./test.log err : %v\n", err) } if logFile != nil { defer func(file *os.File) { file.Close() }(logFile) } debugLog := log.New(logFile, "[Waring]", log.Ldate) debugLog.SetPrefix("[Waring]") debugLog.SetFlags(log.Lshortfile) debugLog.Println("this is Waring log") } func main() { logName := "./test.log" Debug(logName) Waring(logName) } ~~~
                  <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>

                              哎呀哎呀视频在线观看