golang log日志

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/youshijian99/article/details/84790006

const (
    // 字位共同控制输出日志信息的细节。不能控制输出的顺序和格式。
    // 在所有项目后会有一个冒号:2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
    Ldate         = 1 << iota     // 日期:2009/01/23
    Ltime                         // 时间:01:23:23
    Lmicroseconds                 // 微秒分辨率:01:23:23.123123(用于增强Ltime位)
    Llongfile                     // 文件全路径名+行号: /a/b/c/d.go:23
    Lshortfile                    // 文件无路径名+行号:d.go:23(会覆盖掉Llongfile)
    LstdFlags     = Ldate | Ltime // 标准logger的初始值
)


func New(out io.Writer, prefix string, flag int) *Logger
New创建一个Logger。
参数out设置日志信息写入的目的地。
参数prefix会添加到生成的每一条日志前面。
参数flag定义日志的属性(时间、文件等等)。


func (l *Logger) Fatalln(v ...interface{})
Fatalln等价于
{
    l.Println(v...);
    os.Exit(1)
}

func (l *Logger) Println(v ...interface{})
Println调用l.Output将生成的格式化字符串输出到logger,参数用和fmt.Println相同的方法处理。


func (l *Logger) Output(calldepth int, s string) error
Output写入输出一次日志事件。
参数s包含在Logger根据选项生成的前缀之后要打印的文本。
如果s末尾没有换行会添加换行符。
calldepth用于恢复PC,出于一般性而提供,但目前在所有预定义的路径上它的值都为2。
 

package main

import (
	"log"
	"os"
)

var logger *log.Logger
var file *os.File
var err error

func init() {
	file, err = os.OpenFile("test.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 666)
	if err != nil {
		logger.Fatal(err)
	}
	logger = log.New(file, "", log.LstdFlags)
	logger.SetPrefix("Test- ") // 设置日志前缀
	logger.SetFlags(log.LstdFlags | log.Lshortfile)
	/*
		const (
			// 字位共同控制输出日志信息的细节。不能控制输出的顺序和格式。
			// 在所有项目后会有一个冒号:2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
			Ldate         = 1 << iota     // 日期:2009/01/23
			Ltime                         // 时间:01:23:23
			Lmicroseconds                 // 微秒分辨率:01:23:23.123123(用于增强Ltime位)
			Llongfile                     // 文件全路径名+行号: /a/b/c/d.go:23
			Lshortfile                    // 文件无路径名+行号:d.go:23(会覆盖掉Llongfile)
			LstdFlags     = Ldate | Ltime // 标准logger的初始值
		)
	*/
}

func main() {
	log.Println("输出日志到命令行终端")
	logger.Println("将日志写入文件")
	//log.Panicln("在命令行终端输出panic,并中断程序执行")
	logger.Panicln("在日志文件中写入panic,并中断程序执行")

	log.Fatal("在命令行终端输出日志并执行os.exit(1)")
	//logger.Fatal("在日志文件中写入日志并执行os.exit(1)")
	defer file.Close()
}

# cat test.log
Test- 2018/12/04 15:51:58 main.go:36: 将日志写入文件
Test- 2018/12/04 15:51:58 main.go:38: 在日志文件中写入panic,并中断程序执行

猜你喜欢

转载自blog.csdn.net/youshijian99/article/details/84790006