真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Go語言中日志處理,log包的使用

Golang提供了原生日志庫“l(fā)og”,使用簡單方便,本文以代碼為例進(jìn)行說明介紹。

目前創(chuàng)新互聯(lián)建站已為上1000+的企業(yè)提供了網(wǎng)站建設(shè)、域名、虛擬主機(jī)、網(wǎng)站托管、服務(wù)器租用、企業(yè)網(wǎng)站設(shè)計(jì)、永年網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

package main

import (
    "os"
    "log"
    "fmt"
)

func main() {
    // 打開日志文件
    // 第二個(gè)參數(shù)為打開文件的模式,可選如下:
    /*
    O_RDONLY // 只讀模式打開文件
        O_WRONLY // 只寫模式打開文件
        O_RDWR   // 讀寫模式打開文件
        O_APPEND // 寫操作時(shí)將數(shù)據(jù)附加到文件尾部
        O_CREATE // 如果不存在將創(chuàng)建一個(gè)新文件
        O_EXCL   // 和O_CREATE配合使用,文件必須不存在
        O_SYNC   // 打開文件用于同步I/O
        O_TRUNC  // 如果可能,打開時(shí)清空文件
     */
     // 第三個(gè)參數(shù)為文件權(quán)限,請(qǐng)參考linux文件權(quán)限,664在這里為八進(jìn)制,代表:rw-rw-r--
    logFile, err := os.OpenFile("e:/go.log", os.O_WRONLY | os.O_CREATE | os.O_APPEND, 0644)
    if err != nil {
        log.Fatal(err)
    }

    // 第一個(gè)參數(shù)為輸出io,可以是文件也可以是實(shí)現(xiàn)了該接口的對(duì)象,此處為日志文件;第二個(gè)參數(shù)為自定義前綴;第三個(gè)參數(shù)為輸出日志的格式選項(xiàng),可多選組合
    // 第三個(gè)參數(shù)可選如下:
    /*
    Ldate         = 1             // 日期:2009/01/23
        Ltime         = 2             // 時(shí)間:01:23:23
        Lmicroseconds = 4             // 微秒分辨率:01:23:23.123123(用于增強(qiáng)Ltime位)
        Llongfile     = 8             // 文件全路徑名+行號(hào): /a/b/c/d.go:23
        Lshortfile    = 16            // 文件無路徑名+行號(hào):d.go:23(會(huì)覆蓋掉Llongfile)
        LstdFlags     = Ldate | Ltime // 標(biāo)準(zhǔn)logger的初始值
     */
    debugLog := log.New(logFile, "[debug]", log.Ldate|log.Ltime|log.Llongfile)

    // 日志輸出
    debugLog.Print("日志測試Print輸出,處理同fmt.Print")
    debugLog.Println("日志測試Println輸出,處理同fmt.Println")
    debugLog.Printf("日志測試%s輸出,處理同fmt.Printf", "Printf")

    // 日志輸出,同時(shí)直接終止程序,后續(xù)的操作都不會(huì)執(zhí)行
    debugLog.Fatal("日志測試Fatal輸出,處理等價(jià)于:debugLog.Print()后,再執(zhí)行os.Exit(1)")
    debugLog.Fatalln("日志測試Fatalln輸出,處理等價(jià)于:debugLog.Println()后,再執(zhí)行os.Exit(1)")
    debugLog.Fatalf("日志測試%s輸出,處理等價(jià)于:debugLog.Print()后,再執(zhí)行os.Exit(1)", "Fatalf")

    // 日志輸出,同時(shí)拋出異常,可用recover捕捉
    defer func() {
        if r := recover(); r != nil {
            fmt.Println("===========", r)
        }
    }()
    debugLog.Panic("日志測試Panic輸出,處理等價(jià)于:debugLog.Print()后,再執(zhí)行Panic()")
    debugLog.Panicln("日志測試Panicln輸出,處理等價(jià)于:debugLog.Println()后,再執(zhí)行Panic()")
    debugLog.Panicf("日志測試%s輸出,處理等價(jià)于:debugLog.Printf()后,再執(zhí)行Panic()", "Panicf")

    fmt.Println("前綴為:", debugLog.Prefix())    // 前綴為: [debug]
    fmt.Println("輸出選項(xiàng)為:", debugLog.Flags()) // 輸出選項(xiàng)為: 11
    // 設(shè)置前綴
    debugLog.SetPrefix("[info]")
    // 設(shè)置輸出選項(xiàng)
    debugLog.SetFlags(log.LstdFlags)
    fmt.Println("前綴為:", debugLog.Prefix())    // 前綴為: [info]
    fmt.Println("輸出選項(xiàng)為:", debugLog.Flags()) // 輸出選項(xiàng)為: 3
}

說明:以上代碼執(zhí)行時(shí)要分段注釋后執(zhí)行,否則執(zhí)行到:

debugLog.Fatal("日志測試Fatal輸出,處理等價(jià)于:debugLog.Print()后,再執(zhí)行os.Exit(1)")

便會(huì)終止


標(biāo)題名稱:Go語言中日志處理,log包的使用
網(wǎng)站鏈接:http://weahome.cn/article/ipcjpi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部