Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一
下面代码转载自:http://studygolang.com/articles/2343
不论应用是如何部署的,我们都期望能扑捉到应用的错误日志, 解决思路:
第一种方法比较简单, 我们这里主要看后两种: 使用 stderr替换的代码: package main import ( func main() { 这里的 Stdout 、Stderr 的含义如下, 同样也适用win: 在通常情况下,UNIX每个程序在开始运行的时刻,都会有3个已经打开的stream. 分别用来输入,输出,打印诊断和错误信息。通常他们会被连接到用户终端. 但也可以改变到其它文件或设备。 Linux内核启动的时候默认打开的这三个I/O设备文件:标准输入文件stdin,标准输出文件stdout,标准错误输出文件stderr,分别得到文件描述符 0,1,2。 stdin是标准输入,stdout是标准输出,stderr是标准错误输出。大多数的命令行程序从stdin输入,输出到stdout或stderr。
上面方法,可能会拦截不到一些系统级别的崩溃信息,这时候就需要走下面的方案了。 使用 syscall.Dup2 的例子如下, 注意 windows 下会编译直接报错: undefined: syscall.Dup2, 只有 linux 下才可以用。 syscall.Dup2 is a linux/OSX only thing. there's no windows equivalent。 参考:https://github.com/golang/go/issues/325 import ( func main() { 这两个区别,我看到有下面描述文字: https://github.com/golang/go/issues/325 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |