표준 라이브러리의 이동 언어를 기록

이 소프트웨어 개발 디버깅 단계 또는 소프트웨어 로그 다음 줄의 위상이 항상 매우 중요한 부분이었다이든, 우리는 프로그램에 로깅의 좋은 습관을 배양해야한다.

로그

내장 된 언어를 이동 log패키지는 간단한 로그 서비스를 구현합니다. 이 문서에서는 표준 라이브러리 설명 log기본 사용.

사용 로거

로그 패키지 포맷 출력하는 방법을 제공 로거 타입을 정의한다. 이 패키지는 또한 함수를 호출하여, 사전에 정의 된 "표준"로거를 제공합니다 Print系列(| | PRINTF에 println 인쇄) Fatal系列(치명적인 | Fatalf | Fatalln을) 및 Panic系列(공황 | Panicf | Panicln)는 자신보다 로거를 생성, 사용 사용하기 쉬운 객체.

예를 들어, 우리는 다음과 같은 코드를 직접와 동일 할 수있다 log그들이 터미널 인터페이스에 인쇄 로그 정보를 기본값으로, 패키지 위에서 언급 한 방법을 호출 :

package main

import (
    "log"
)

func main() {
    log.Println("这是一条很普通的日志。")
    v := "很普通的"
    log.Printf("这是一条%s日志。\n", v)
    log.Fatalln("这是一条会触发fatal的日志。")
    log.Panicln("这是一条会触发panic的日志。")
}

컴파일 다음 상기 코드 출력이 수행 될 것이다 :

2017/06/19 14:04:17 这是一条很普通的日志。
2017/06/19 14:04:17 这是一条很普通的日志。
2017/06/19 14:04:17 这是一条会触发fatal的日志。

로거는 각각의 로그 정보, 표준 오류로 시스템 기본 출력의 날짜와 시간을 인쇄합니다. 기능의 치명적인 일련의 로그 정보 (1)를 작성 후 os.Exit를 호출합니다. 공황 시리즈 기능은 로그 정보를 기입 한 후 당황 할 것이다.

구성 로거

표준 로거 구성

기본적으로 로거는 로그에 시간 정보를 제공하지만, 많은 경우에 우리는 등 로그의 로그 파일 이름과 줄 번호로, 더 많은 정보를 얻을합니다. log표준 라이브러리는 우리를 위해 이러한 사용자 정의 메소드 세트를 제공합니다.

log표준 라이브러리 Flags함수는 로거 표준 출력 구성을 반환하고 SetFlags함수는 표준 출력 구성 로거를 설정할 수 있습니다.

func Flags() int
func SetFlags(flag int)

플래그 옵션

log표준 라이브러리는 정의 된 상수의 일련의 다음과 같은 옵션 플래그를 제공합니다.

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)
    LUTC                          // 使用UTC时间
    LstdFlags     = Ldate | Ltime // 标准logger的初始值
)

다음과 같이 출력 옵션입니다 먼저 표준 로거에 대해 폭넓게 로그인하기 전에 우리를 보자 :

func main() {
    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)
    log.Println("这是一条很普通的日志。")
}

다음과 같이 실행 컴파일 출력은 :

2017/06/19 14:05:17.494943 .../log_demo/main.go:11: 这是一条很普通的日志。

로그 접두사를 구성

log표준 라이브러리는 접두사에 대한 정보를 기록하는 두 가지 방법을 제공합니다 :

func Prefix() string
func SetPrefix(prefix string)

상기 Prefix기능은 표준 출력 로거 프리픽스 보는 데 사용되는 SetPrefix함수를 출력 프리픽스를 설정하기 위해 사용된다.

func main() {
    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)
    log.Println("这是一条很普通的日志。")
    log.SetPrefix("[小王子]")
    log.Println("这是一条很普通的日志。")
}

다음 위의 코드를 출력한다 :

[小王子]2017/06/19 14:05:57.940542 .../log_demo/main.go:13: 这是一条很普通的日志。

그래야 우리가 쉽게 검색 및 처리에 대한 로그 정보를 한 후, 코드에서 우리의 지정된 접두사 로그 정보를 추가 할 수 있습니다.

구성 로그 출력 위치

func SetOutput(w io.Writer)

SetOutput표준 로거 기능은 기본 표준 오류 출력, 출력 대상을 설정합니다.

예를 들어, 다음 코드는 같은 디렉토리에 로그인 할 출력됩니다 xx.log파일.

func main() {
    logFile, err := os.OpenFile("./xx.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println("open log file failed, err:", err)
        return
    }
    log.SetOutput(logFile)
    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)
    log.Println("这是一条很普通的日志。")
    log.SetPrefix("[小王子]")
    log.Println("这是一条很普通的日志。")
}

당신은 표준 로거를 사용하려는 경우, 우리는 일반적으로 위의 구성 운영 쓸 것이다 init기능.

func init() {
    logFile, err := os.OpenFile("./xx.log", os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644)
    if err != nil {
        fmt.Println("open log file failed, err:", err)
        return
    }
    log.SetOutput(logFile)
    log.SetFlags(log.Llongfile | log.Lmicroseconds | log.Ldate)
}

로거 만들기

log- 표준 라이브러리는 또한 새로운 로거 객체 생성자를 만들 수 있습니다 New우리 자신의 로거 예제의 생성을 지원합니다. New다음과 같이 서명 기능은 다음과 같습니다

func New(out io.Writer, prefix string, flag int) *Logger

로거 객체를 만들려면 새로. 상기 파라미터 설정 로그 정보가 대상에 기록됩니다. 파라미터 프리픽스 생산 각 로그의 앞에 추가된다. 매개 변수는 사용자 지정 로그 특성 (시간, 파일 등) 플래그.

예를 들면 :

func main() {
    logger := log.New(os.Stdout, "<New>", log.Lshortfile|log.Ldate|log.Ltime)
    logger.Println("这是自定义的logger记录的日志。")
}

이 코드는 다음과 같은 결과를 획득하기 위해, 상기 수행 후 컴파일 :

<New>2017/06/19 14:06:51 main.go:34: 这是自定义的logger记录的日志。

개요

같은 로그 레코드 케이스의 서로 다른 수준을 충족 할 수없는 등의 제한 내장 로그 라이브러리 함수를, 이동, 우리는 실제 프로젝트에서 필요에 따라 같은 타사 로깅 라이브러리를 사용하기로 결정했습니다 Logrus , ZAP 등등합니다.

추천

출처www.cnblogs.com/nickchen121/p/11517450.html