Golang提供了原生日志库“日志”,使用简单方便,本文以代码为例进行说明介绍。
<代码>包主要 导入( “操作系统” “日志” “fmt” ) 函数main () {//打开日志文件//第二个参数为打开文件的模式,可选如下:/* O_RDONLY//只读模式打开文件 O_WRONLY//只写模式打开文件 O_RDWR//读写模式打开文件 O_APPEND//写操作时将数据附加到文件尾部 O_CREATE//如果不存在将创建一个新文件 O_EXCL//和O_CREATE配合使用,文件必须不存在 O_SYNC//打开文件用于同步I/O O_TRUNC//如果可能,打开时清空文件 *///第三个参数为文件权限,请参考linux文件权限,664在这里为八进制,代表:rw-rw-r— 日志文件,犯错:=os.OpenFile (“e:/H罩尽?操作系统。O_WRONLY |操作系统。O_CREATE |操作系统。O_APPEND, 0644) 如果犯错!=nil { log.Fatal (err) }//第一个参数为输出io,可以是文件也可以是实现了该接口的对象,此处为日志文件;第二个参数为自定义前缀;第三个参数为输出日志的格式选项,可多选组合//第三个参数可选如下:/* Ldate=1//日期:2009/01/23 Ltime=2//时间:01:23:23 Lmicroseconds=4//微秒分辨率:01:23:23.123123(用于增强Ltime位) Llongfile=8//文件全路径名+行号:/a/b/c/d.go: 23 Lshortfile=16//文件无路径名+行号:d.go: 23(会覆盖掉Llongfile) LstdFlags=Ldate | Ltime//标准记录器的初始值 */debugLog:=日志。新(日志文件,“(调试)”,log.Ldate | log.Ltime | log.Llongfile)//日志输出 debugLog.Print(“日志测试打印输出,处理同fmt.Print”) debugLog.Println(“日志测试Println输出,处理同fmt.Println”) debugLog.Printf(“日志测试% s输出,处理同fmt。Printf”、“Printf“)//日志输出,同时直接终止程序,后续的操作都不会执行 debugLog.Fatal(“日志测试致命的输出,处理等价于:debugLog.Print()后,再执行os.Exit (1)”) debugLog.Fatalln(“日志测试Fatalln输出,处理等价于:debugLog.Println()后,再执行os.Exit (1)”) debugLog.Fatalf(“日志测试% s输出,处理等价于:debugLog.Print()后,再执行os.Exit (1)”、“Fatalf”)//日志输出,同时抛出异常,可用恢复捕捉 推迟func () { 如果r:=()恢复;r !=nil { fmt。Println(“===========",右) } }() debugLog.Panic(“日志测试恐慌输出,处理等价于:debugLog.Print()后,再执行恐慌()”) debugLog.Panicln(“日志测试Panicln输出,处理等价于:debugLog.Println()后,再执行恐慌()”) debugLog.Panicf(“日志测试% s输出,处理等价于:debugLog.Printf()后,再执行恐慌()”、“Panicf”) fmt。Println(“前缀为:“,debugLog.Prefix())//前缀为:(调试) fmt。Println(“输出选项为:“,debugLog.Flags())//输出选项为:11//设置前缀 debugLog.SetPrefix(“[信息]”)//设置输出选项 debugLog.SetFlags (log.LstdFlags) fmt。Println(“前缀为:“,debugLog.Prefix())//前缀为:[信息] fmt。Println(“输出选项为:“,debugLog.Flags())//输出选项为:3 } 代码>
说明:以上代码执行时要分段注释后执行,否则执行到:
<代码> debugLog.Fatal(“日志测试致命的输出,处理等价于:debugLog.Print()后,再执行os.Exit(1)”) 代码>
便会终止