How do I print message to stderr in Go?

huangapple go评论84阅读模式
英文:

How do I print message to stderr in Go?

问题

我想要打印一些用于调试和测试的日志,但是现有的日志非常庞大,所以我想要将自己的日志打印到标准错误流(stderr)中:

go run main.go 1>/dev/null

这样我就只能看到自己的日志了。

我该如何做到这一点?

英文:

I want to print some logs for debugging and testing, but existing logs are massive, so I want to print my own logs to stderr:

go run main.go 1>/dev/null

So that I can just see my own logs.

How can I do that?

答案1

得分: 29

有多种方法可以将消息发送到stderr

  1. 创建一个新的log.Logger

     l := log.New(os.Stderr, "", 1)
     l.Println("log message")
    
  2. 使用fmt.Fprintf

     fmt.Fprintf(os.Stderr, "log message: %s", str)
    
  3. 直接使用os.Stderr.WriteString将消息写入os.Stderr

     os.Stderr.WriteString("log message")
    
英文:

There are multiple methods to send a message to stderr:

  1. Creating a new log.Logger:

     l := log.New(os.Stderr, "", 1)
     l.Println("log message")
    
  2. Using fmt.Fprintf:

     fmt.Fprintf(os.Stderr, "log message: %s", str)
    
  3. Directly writing to os.Stderr using os.Stderr.WriteString:

     os.Stderr.WriteString("log message")
    

答案2

得分: 21

log包默认情况下会将日志打印到os.Stderr

你也可以直接使用os.Stderr(它是一个os.File)。

英文:

The log package by default prints to os.Stderr.

You can also use os.Stderr directly (it's an os.File).

答案3

得分: 0

在Linux系统上,你也可以使用syslog(3)设施。默认情况下,底层的openlog(3)不会输出到stderr,但可以进行更改。

请参考Go包log/syslog。

英文:

On Linux systems, you could also use syslog(3) facilities. By default, the underlying openlog(3) does not go to stderr, but this can be changed.

See Go package log/syslog.

huangapple
  • 本文由 发表于 2015年3月9日 11:32:20
  • 转载请务必保留本文链接:https://go.coder-hub.com/28934859.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定