log包
日志相关
常量
常量列表:
- Ldate 日期 年/月/日
- Ltime 时间 时:分:秒
- Lmicroseconds 时间 .毫秒于Ltime之后
- Llongfile 完整文件名:行号
- Lshortfile 文件名,此标志位优先于 Llongfile
- LstdFlags = Ldate 并且 Ltime
功能说明:标志位常量控制日志格式。
func main() {
log.SetFlags(log.Lshortfile | log.LstdFlags)
log.Println("log:") //2023/05/18 12:09:57 constantsDemo.go:15: log:
}
函数列表
func Fatal(v ...interface{})
func Fatalf(format string, v ...interface{})
func Fatalln(v ...interface{})
func Flags() int
func Panic(v ...interface{})
func Panicf(format string, v ...interface{})
func Panicln(v ...interface{})
func Prefix() string
func Print(v ...interface{})
func Printf(format string, v ...interface{})
func Println(v ...interface{})
func SetFlags(flag int)
func SetOutput(w io.Writer)
func SetPrefix(prefix string)
func New(out io.Writer, prefix string, flag int) *Logger
func (l *Logger) Fatal(v ...interface{})
func (l *Logger) Fatalf(format string, v ...interface{})
func (l *Logger) Fatalln(v ...interface{})
func (l *Logger) Flags() int
func (l *Logger) Output(calldepth int, s string) error
func (l *Logger) Panic(v ...interface{})
func (l *Logger) Panicf(format string, v ...interface{})
func (l *Logger) Panicln(v ...interface{})
func (l *Logger) Prefix() string
func (l *Logger) Print(v ...interface{})
func (l *Logger) Printf(format string, v ...interface{})
func (l *Logger) Println(v ...interface{})
func (l *Logger) SetFlags(flag int)
func (l *Logger) SetPrefix(prefix string)
自定义logger
func New(out io.Writer, prefix string, flag int) *Logger
- 参数列表:
- out 输出目标
- prefix 输出前缀
- flag 格式配置标识值
- 返回值:
- 自定义的logger
- 功能说明:这个方法用来自定义logger,指定输出目标、格式等
func main() {
l := log.New(os.Stderr, "logger", log.Ldate)
l.Println("log to stderr sample")//logger2023/05/18 log to stderr sample
}
1、 Fatal系列函数
1.1 func Fatal(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:打印日志并退出。相当于调用Print()并os.Exit(1)
1.2 func Fatalf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 带输出参数列表
- 返回值:
- 无
- 功能说明:按格式输出日志,并退出。相当于调用Printf()并调用os.Exit(1)
1.3 func Fatalln(v …interface{})
- 参数列表:
- v
- 返回值:
- 无
- 功能说明:打印一行日志并退出。相当于调用Println()并os.Exit(1)
1.4 func (l *Logger) Fatal(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:打印日志并退出。相当于调用l.Print()并os.Exit(1)
1.5 func Fatalf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 带输出参数列表
- 返回值:
- 无
- 功能说明:按格式输出日志,并退出。相当于调用l.Printf()并调用os.Exit(1)
1.6 func (l *Logger) Fatalln(v …interface{})
- 参数列表:
- v
- 返回值:
- 无
- 功能说明:打印一行日志并退出。相当于调用l.Println()并os.Exit(1)
func main() {
age := 25
log.Fatal("Hi & Bye ! Age = ", age) // this will print "Hi & Bye ! Age = 25"
log.Println("This will not be called.")
name := "golang"
log.Fatalf("%8d,%8s", 23, name) //2013/03/10 16:08:49 23, golang
log.Fatalln("bye!") //2013/03/10 16:14:54 bye!\n
l := log.New(os.Stdout, "", log.LstdFlags)
age = 25
l.Fatal("Hi & Bye ! Age = ", age) // this will print "Hi & Bye ! Age = 25"
l.Println("This will not be called.")
l = log.New(os.Stdout, "", log.LstdFlags)
//l.Fatalf("%s", "hello")
name = "golang"
l.Fatalf("%8d,%8s", 23, name) //2013/03/10 16:08:49 23, golang
l = log.New(os.Stdout, "", log.LstdFlags)
l.Fatalln("bye!") //2013/03/10 16:14:54 bye!\n
}
2、Flags系列函数
2.1 func Flags() int
- 参数列表:
- 无
- 返回值:
- 默认logger的配置值
- 功能说明:返回默认logger配置值。
2.2 func (l *Logger) Flags() int
- 参数列表:
- 无
- 返回值:
- 当期logger的配置值
- 功能说明:返回当前logger配置值。
2.3 func SetFlags(flag int)
- 参数列表:
- flag logger配置值
- 返回值:
- 无
- 功能说明:这个方法用来设置标准logger的配置,默认为3(logger.LstdFlags)
2.4 func (l *Logger) SetFlags(flag int)
- 参数列表:
- flag logger配置值
- 返回值:
- 无
- 功能说明:这个方法用来设置标准logger的配置,默认为3(logger.LstdFlags)
func main() {
fmt.Println("standard flags :", log.Flags()) //standard flags : 3
//the flags constants
fmt.Println(log.Ldate) //1
fmt.Println(log.Ltime) //2
fmt.Println(log.Lmicroseconds) //4
fmt.Println(log.Llongfile) //8
fmt.Println(log.Lshortfile) //16
fmt.Println(log.LstdFlags) //LstdFlags = Ldate | Ltime 3
l := log.New(os.Stdout, "", log.LstdFlags)
fmt.Println("logger l's flags :", l.Flags()) //logger l's flags : 3
log.Println(log.Flags()) //2013/03/10 17:46:53 3
log.SetFlags(log.Ldate)
log.Println(log.Flags()) //2013/03/10 1
log.SetFlags(log.LstdFlags | log.Lshortfile)
log.Println(log.Flags()) //2013/03/10 17:46:53 setflags.go:17: 19
l = log.New(os.Stdout, "", log.LstdFlags)
l.Println(l.Flags()) //2013/03/10 17:46:53 3
l.SetFlags(log.Ldate)
l.Println(l.Flags()) //2013/03/10 1
l.SetFlags(log.LstdFlags | log.Lshortfile)
l.Println(l.Flags()) //2013/03/10 17:46:53 setflags.go:17: 19
}
3、Panic系列函数
3.1 func (l *Logger) Panic(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:这个方法相当于调用l.Print()及panic()
3.2 func (l *Logger) Panicf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:相当于调用l.Printf(),之后调用panic()
3.3 func (l *Logger) Panicln(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:相当于调用l.Println()并调用panic()
3.4 func Panic(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:这个方法相当于调用Print()及panic()
3.5 func Panicf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 待输出参数列表
- 返回值:- 无
- 功能说明:相当于调用Printf(),之后调用panic()
3.6 func Panicln(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:相当于调用Println()并调用panic()
func main() {
l := log.New(os.Stdout, "", log.LstdFlags)
defer func() {
if err := recover(); err != nil {
fmt.Println(err) //output : "call panic and stop"
handleException()
}
}()
l.Panic("call panic and stop")
log.Println("this will not be called.")
defer func() {
if err := recover(); err != nil {
if err == "3q" {
log.Println("you are welcome")
}
}
}()
l = log.New(os.Stdout, "", log.LstdFlags)
l.Panicf("%d%s", 3, "q")
defer func() {
if err := recover(); err != nil {
if err == "3q\n" {
log.Println("you are welcome")
}
}
}()
l = log.New(os.Stdout, "", log.LstdFlags)
l.Panicln("3q")
}
func handleException() {
log.Println("recovering...")
}
4、Print系列函数
4.1 func (l *Logger) Print(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:输出日志到logger。参数处理方式同fmt.Print
4.2 func (l *Logger) Printf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:调用l.Output输出日志到logger l。参数处理方式同fmt.Printf
4.3 func (l *Logger) Println(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:调用Output打印日志到当前logger,参数处理方式同fmt.Println
4.4 func Print(v …interface{})
- 参数列表:
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:输出日志到标准logger。参数处理方式同fmt.Print
4.5 func Printf(format string, v …interface{})
- 参数列表:
- format 输出格式
- v 待输出参数列表
- 返回值:
- 无
- 功能说明:调用Output输出日志到标准logger。参数处理方式同fmt.Printf
4.6 func Println(v …interface{})
- 参数列表:
- v
- 返回值:
- 无
- 功能说明:调用Output打印日志到标准logger,参数处理方式同fmt.Println
func main() {
l := log.New(os.Stdout, "", log.LstdFlags)
l.Print("string", 1, 2.3) //2013/03/10 17:26:06 string1 2.3
l = log.New(os.Stdout, "", log.LstdFlags)
l.Printf("%s", "hello") //hello
name := "golang"
l.Printf("%8d,%8s", 23, name) //2013/03/10 16:08:49 23, golang
l = log.New(os.Stdout, "", log.LstdFlags)
l.Println("hello") //2013/03/10 17:35:28 hello\n
log.Print("string", 1, 2.3) //2013/03/10 17:26:06 string1 2.3
log.Printf("%s", "hello") //hello
name = "golang"
log.Printf("%8d,%8s", 23, name) //2013/03/10 16:08:49 23, golang
log.Println("hello") //2013/03/10 17:35:28 hello\n
}
5、其它函数
5.1 func (l *Logger) Prefix() string
- 参数列表:
- 无
- 返回值:
- logger前缀,字符串类型
- 功能说明:返回当前logger的输出前缀
5.2 func Prefix() string
- 参数列表:
- 无
- 返回值:
- 标准logger前缀,字符串类型
- 功能说明:返回标准logger的输出前缀
5.3 func SetPrefix(prefix string)
- 参数列表:
- prefix 前缀
- 返回值:
- 无
- 功能说明:设置logger的输出前缀
5.4 func SetPrefix(prefix string)
- 参数列表:
- prefix 前缀
- 返回值:
- 无
- 功能说明:设置logger的输出前缀
5.5 func (l *Logger) Output(calldepth int, s string) error
- 参数列表:
- calldepth 深度
- s 字符串
- 返回值:
- error 错误
- 功能说明:输出日志事件。字符串s包含待打印内容,跟在预定义的prefix后面,并且根据flags设置会有区分。如果s末尾没有换行符,这个方法会默认加上一个。calldepth目前预定义均为2,以后会用来支持通用场景,支持其他值配置。(本人注:日志输出不建议直接使用该方法)
5.6 func SetOutput(w io.Writer)
- 参数列表:
- w 目标流,io.Writer类型
- 返回值:
- 无
- 功能说明:设置标准logger的输出目标
func main() {
l := log.New(os.Stdout, "", log.LstdFlags)
fmt.Print(l.Prefix()) //this will print nothing
l.Println(1) //2013/03/10 17:02:05 1
l.SetPrefix("log:")
fmt.Println(l.Prefix()) //log:
l.Println(2) //log:2013/03/10 17:02:05 2
fmt.Print(log.Prefix()) //this will print nothing
log.Println(1) //2013/03/10 17:02:05 1
log.SetPrefix("log:")
fmt.Println(log.Prefix()) //log:
log.Println(2) //log:2013/03/10 17:02:05 2
l = log.New(os.Stdout, "", log.LstdFlags)
fmt.Print(l.Prefix()) //this will print nothing
l.Println(1) //2013/03/10 17:02:05 1
l.SetPrefix("log:")
fmt.Println(l.Prefix()) //log:
l.Println(2) //log:2013/03/10 17:02:05 2
fmt.Print(log.Prefix()) //this will print nothing
log.Println(1) //2013/03/10 17:02:05 1
log.SetPrefix("log:")
fmt.Println(log.Prefix()) //log:
log.Println(2) //log:2013/03/10 17:02:05 2
l = log.New(os.Stdout, "log->", log.Ldate)
l.Output(2, "log output")
file, err := os.OpenFile("sample.txt", os.O_WRONLY, 0666)
if err != nil {
panic(err)
}
defer file.Close()
log.SetOutput(file)
log.Println("log to file")
}
635

被折叠的 条评论
为什么被折叠?



