IT story

로그를 사용하지 않고 Go에서 Stderr로 인쇄하는 방법

hot-time 2021. 1. 5. 19:16
반응형

로그를 사용하지 않고 Go에서 Stderr로 인쇄하는 방법


사용하지 않고 log어떻게 Stderr에 메시지를 쓸 수 있습니까?

이 SO 게시물의 주석은log : 으로 수행하는 방법을 보여줍니다 . log.Println("Message")하지만 타임 스탬프를 원하지 않으면 어떻게해야합니까?

다음은 좋은 바둑입니까?

os.Stderr.WriteString("Message")


타임 스탬프를 원하지 않는 경우 다음 log.Logger으로 flag설정하여 새로 만듭니다 0.

l := log.New(os.Stderr, "", 0)
l.Println("log msg")

편집하다:

다음은 좋은 바둑입니까?

os.Stderr.WriteString("Message")

이것은 허용 가능하며 및 fmt.Fprintf친구를 사용 하여 형식화 된 출력을 얻을 수도 있습니다 .

fmt.Fprintf(os.Stderr, "number of foo: %d", nFoo)

fmt패키지를 사용하여 다음 과 같이 작성하도록 선택할 수 있습니다 stderr.

import "fmt"
import "os"

func main() {
    fmt.Fprintln(os.Stderr, "hello world")
}

os.Stderrio.Writer당신이를 받아들이는 모든 함수에서 사용할 수 있도록 io.Writer. 다음은 몇 가지 예입니다.

str := "Message"
fmt.Fprintln(os.Stderr, str)
io.WriteString(os.Stderr, str)
io.Copy(os.Stderr, bytes.NewBufferString(str))
os.Stderr.Write([]byte(str))

그것은 모두 당신이 인쇄하려는 문자열을 얼마나 정확하게 가지고 있는지에 달려 있습니다 (즉, 먼저 포맷하고 싶다면 io.Reader,으로 가지고 있다면, 바이트 조각으로 가지고 있다면 ...). 그리고 훨씬 더 많은 방법이있을 수 있습니다.


기본적으로 로거 플래그는로 설정됩니다 Ldate | Ltime. 로거 형식을 다음 중 하나로 변경할 수 있습니다 ( golang 로그 문서에서 ).

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

예를 들어, Ldate | Ltime (또는 LstdFlags)은

2009/01/23 01:23:23 message

플래그 Ldate 동안 | Ltime | L 마이크로 초 | Llongfile 생산,

2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message

플래그를 0으로 설정하여 아무것도 인쇄하지 않도록 기본 로거를 설정할 수도 있습니다.

log.SetFlags(0)

SetOutput 함수를 사용하고 출력 스트림을 os.Stdout으로 설정하십시오.

import (
    "log"
    "os"
)

func init() {
    log.SetOutput(os.Stdout)
}

func main() {
    log.Println("Gene Story SNP File Storage Server Started.")
}

참조 URL : https://stackoverflow.com/questions/29721449/how-can-i-print-to-stderr-in-go-without-using-log

반응형