Go   发布时间:2022-04-09  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了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@
func 
l 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@
package
test 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,请注明来意。