golang package log

package main

import (
    "log"
    "os"
)

var logger *log.Logger

func main() {
    file, err := os.OpenFile("test.log", os.O_APPEND|os.O_CREATE, 666)
    if err != nil {
        log.Fatalln("fail to create test.log file!")
    }
    defer file.Close()
    logger = log.New(file, "", log.LstdFlags|log.Lshortfile) // 日志文件格式:log包含时间及文件行数
    log.Println("输出日志到命令行终端")
    logger.Println("将日志写入文件")

    logger.SetFlags(log.LstdFlags | log.Lshortfile) // 设置日志格式

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

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

Logger结构体所有字段都是私有的,提供了一个工厂函数获取结构体实例

// 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(out io.Writer, prefix string, flag int) *Logger {
   return &Logger{out: out, prefix: prefix, flag: flag}
}

flag参数的常量

const (
   Ldate         = 1 << iota     // the date in the local time zone: 2009/01/23
   Ltime                         // the time in the local time zone: 01:23:23
   Lmicroseconds                 // microsecond resolution: 01:23:23.123123.  assumes Ltime.
   Llongfile                     // full file name and line number: /a/b/c/d.go:23
   Lshortfile                    // final file name element and line number: d.go:23. overrides Llongfile
   LUTC                          // if Ldate or Ltime is set, use UTC rather than the local time zone
   LstdFlags     = Ldate | Ltime // initial values for the standard logger
)

原文地址:https://www.cnblogs.com/endurance9/p/10356433.html

时间: 2024-08-13 04:14:03

golang package log的相关文章

golang之log rotate

操作系统: CentOS 6.9_x64 go语言版本: 1.8.3 问题描述 golang的log模块提供的有写日志功能,示例代码如下: /* golang log example E-Mail : [email protected] */ package main import ( "log" "os" ) func main() { logFile,err := os.Create("test1.log") defer logFile.Cl

Golang官方log包详解

Golang官方log包详解 以下全是代码, 详解在注释中, 请从头到尾看 // Copyright 2009 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. // Package log implements a simple logging package. I

golang package整理(strconv)

//package strconv //与字符串相关的类型转换都是通过 strconv 包实现的 //任何类型 T 转换为字符串总是成功的 //将字符串转换为其它类型 tp 并不总是可能的,可能会在运行时抛出错误 parsing "-": invalid argument //获取程序运行的操作系统平台下 int 类型所占的位数 strconv.IntSize //**********数字类型转换到字符串**/ //返回数字 i 所表示的字符串类型的十进制数 strconv.Itoa(

golang package(time)

time package in there //time package //time 包为我们提供了一个数据类型 time.Time(作为值使用)以及显示和测量时间和日期的功能函数 //当前时间可以使用 time.Now() 获取,或者使用 t.Day().t.Minute() 等等来获取时间的一部分:你甚至可以自定义时间///   格式化字符串,例如: fmt.Printf("%02d.%02d.%4d\n", t.Day(), t.Month(), t.Year()) 将会输出 

Golang --- package

strings import "strings" strings包实现了用于操作字符的简单函数. strings.Index("suoning", "n") //3(子串第一次出现的位置,不存在则返回-1) strings.LastIndex("suoning", "n") //5(子串最后一次出现的位置,不存在则返回-1) strings.Replace("suoning", &quo

Golang中使用log(一):Golang 标准库提供的Log

Golang的标准库提供了log的机制,但是该模块的功能较为简单(看似简单,其实他有他的设计思路).不过比手写fmt. Printxxx还是强很多的.至少在输出的位置做了线程安全的保护.其官方手册见Golang log (天朝的墙大家懂的).这里给出一个简单使用的例子: package main import ( "log" ) func main(){ log.Fatal("Come with fatal,exit with 1 \n") } 编译运行后,会看到程

Golang学习笔记--log包

个人站:http://www.cloudnoter.com/?p=137 一.快速使用 Golang的log包短小精悍,可以非常轻松的实现日志打印转存功能.不用多说,log支持并发操作(即协程安全-相对于JAVA中的线程安全而言),其结构定义如下: type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write a

Golang中使用log(二):Golang 标准库log的实现

前一篇文章我们看到了Golang标准库中log模块的使用,那么它是如何实现的呢?下面我从log.Logger开始逐步分析其实现. 其源码可以参考官方地址 1.Logger结构 首先来看下类型Logger的定义: type Logger struct { mu sync.Mutex // ensures atomic writes; protects the following fields prefix string // prefix to write at beginning of each

golang log

package log import ( "log" "os" "time" ) var ( debug_log = "debug.log" log_format = "2006-01-02-15" ) var fileHandle *os.File var cs chan string func init() { file_name := getFileName() fileHandle, _ = os.