如何在不使用的情况下向Stderr写消息 log
?
这篇SO帖子中的评论显示了如何使用log
:log.Println("Message")
,但是如果我不想添加时间戳怎么办?
以下是好的Go吗?
os.Stderr.WriteString("Message")
Answers:
Go内置函数print
并println
打印到stderr。因此,如果您只想向stderr输出一些文本,则可以执行
package main
func main() {
println("Hello stderr!")
}
print
并且println
用于调试。
如果您不想使用时间戳记,只需创建一个新的log.Logger
,flag
将其设置为0
:
l := log.New(os.Stderr, "", 0)
l.Println("log msg")
编辑:
以下是好的Go吗?
os.Stderr.WriteString("Message")
这是可以接受的,您还可以使用fmt.Fprintf
和朋友来获取格式化的输出:
fmt.Fprintf(os.Stderr, "number of foo: %d", nFoo)
os.Stderr.WriteString
,IMO就足够了。
默认情况下,记录器标志设置为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 | 微秒| Llongfile产生,
2009/01/23 01:23:23.123123 /a/b/c/d.go:23: message
您还可以通过将标志设置为0,将默认记录器设置为不打印任何内容:
log.SetFlags(0)