//在bash中,通常使用3个整数来表示标准输入(0)、标准输出(1)和标准错误(2)
1.使用Fprintf指定文件的标准输入输出
package main
import (
"fmt"
"os"
)
func main() {
//如果选择重定向到文件,哪怕启动进程时指定重定向,也不会起作用
//./log4go 1>>1.txt 2>>2.txt
// f, _ := os.OpenFile("mylog.txt", os.O_WRONLY|os.O_CREATE|os.O_SYNC,
// 0755)
// os.Stdout = f
// os.Stderr = f
fmt.Fprintf(os.Stdout, "out\n") //输出到默认的stdout
fmt.Fprintf(os.Stderr, "err\n") //输出到默认的stderr
var strInput string
fmt.Scanf("%s", &strInput)
}
使用 ./log4go 1>>1.txt 2>>2.txt 启动进程后,可以使用 ls -l /proc/<subprocesspid>/fd/ 查看进程打开的文件句柄,如下
[root@VM_0_13_centos ~]# ls -l /proc/6744/fd
total 0
lrwx------ 1 root root 64 May 10 15:54 0 -> /dev/pts/0
l-wx------ 1 root root 64 May 10 15:54 1 -> /usr/ywy/goprj/src/log4go/1.txt
l-wx------ 1 root root 64 May 10 15:54 2 -> /usr/ywy/goprj/src/log4go/2.txt
1stdout2stderr
2.golang启动子进程时如果没有显示指定stderr,和stdout,子进程的标准输出默认是/dev/null
3.log4go
日志级别 FINEST level = iota FINE DEBUG TRACE INFO WARNING ERROR CRITICAL