大佬教程收集整理的这篇文章主要介绍了Golang学习笔记--log包,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
个人站:http://www.cloudnoter.com/?p=137
一、快速使用
Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能。不用多说,log支持并发操作(即协程安全-相对于JAVA中的线程安全而言),其结构定义如下:
type Logger struct { mu sync.@H_412_12@mutex // ensures atomic writes; protects the following fields prefix String // prefix to write at beginning of each line // 日志行前缀 flag int // properties // 日志打印格式标志,用于指定每行日志的打印格式 out ioWriter // desTination for output // 用于指定日志输出位置,理论上可以是任务地方,只要实现了io.Writer接口就行 buf []byte// for accumulaTing text to write // 日志内容 }
log包定义了一些日志格式标志:
// these flags define which text to prefix to each log entry generated by the Logger. const( // Bits or'ed together to control what's printed. There is no control over the// order they appear (the order listed herE) or the format they present (as// described in the comments). A colon appears after these items:// 2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message Ldate = 1<< iota // the date: 2009/01/23Ltime // the time: 01:23:23Lmicroseconds // microsecond resolution: 01:23:23.123123. assumes Ltime.Llongfile // full file name and line number: /a/b/c/d.go:23Lshortfile // final file name element and line number: d.go:23. overrides LlongfileLstdFlags |// initial values for the standard logger)
上述这些标志可以在创建Logger对象时指定(通过下面的New函数创建),也可以通过Logger.setFlat()方法动态指定。
Logger对象通过函数New创建
// New creates a new Logger. The out variable sets the // desTination to which log data will be written.// The prefix appears at the beginning of each generated log line.// The flag argument defines the logging properties. func New( ioWriter, prefix String flag int)*return&Logger{out: prefix flag}
log包已默认提供了一个日志对象,并封装了包级别的常用函数,该对象将日志信息输出到标准输出设备中(开箱即用)。
var std osStderr ""LstdFlags// 日志中只使用的flag为LstdFlags,即只输出日期
如果只是想输出到终端而不保存到文件等其它地方时,可以直接通过log.Xxxx()方式直接调用,因为这些包级别的函数只是对std对象相关方法的简单封装,如println函数定义如下:
// Println calls Output to print to the standard logger.// Arguments are handled in the mAnner of fmt.Println.Printlnv ...interface{}) stdOutput(2 fmtSprintlnv...)) 二、Logger对象方法使用说明
Logger对象提供了如下几个方法:@H_479_262@funcl calldepth s error ;// 真正负责日志打印的方法,其它级别的打印方法都将会调用它 // Println calls l.output to print to the logger. func // 一般信息打印方法,相当于JAVA中log的info级别 l // Panicln is equivalent to l.Println() followed by a call to panic(). Panicln// 业务异常时使用的方法,该方法会抛出异常,调用方可以用recover捕获,相当于JAVA的ERROR级别(JAVA不会自动抛异常) s :=...) l s panics// 通过panic抛出异常,只有上层业务没捕获异常时,程序才会异常中止并退出,// Fatalln is equivalent to l.Println() followed by a call to os.Exit(1).Fatalln l osExit1// 调用该方法会中止应用程序并直接退出 三、使用示例@H_479_262@packagetest import "fmt""log""os""tesTing" func TestLogt *tesTing.T fmt("begin TestLog ..." file err osCreate"test.log"if!=nil log"fail to create test.log file!" logger logfilelogLlongfile log"1.Println log with log.LstdFlags ..." logger loggerSetFlags log"2.Println log without log.LstdFlags ..." //log.Panicln("3.std Panicln log without log.LstdFlags ...")//fmt.Println("3 Will this statement be execute ?")//logger.Panicln("3.Panicln log without log.LstdFlags ...")"4.Println log without log.LstdFlags ..."Fatal"5.std Fatal log without log.LstdFlags ...""5 Will this statement be execute ?""5.Fatal log without log.LstdFlags ..."}
以上是大佬教程为你收集整理的Golang学习笔记--log包全部内容,希望文章能够帮你解决Golang学习笔记--log包所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。