// 将stdout, stderr重定向到指定文件 func redirectStdout(logpath string) (err error) { // stdout oldout := os.Stdout if os.Stdout, err = os.OpenFile(filepath.Join(logpath, "stdout.log"), os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm); err != nil { return } stdlog.SetOutput(io.MultiWriter(oldout, os.Stdout)) // stderr if os.Stderr, err = os.OpenFile(filepath.Join(logpath, "stderr.log"), os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm); err != nil { return } return }
// 将Stdout, Stderr重定向到指定文件 func redirectLogOutput(directory string) { oldout := os.Stdout var err error os.Stdout, err = os.OpenFile(directory+"stdout.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm) if err != nil { panic(err) } // 同时输出到屏幕和文件 stdlog.SetOutput(io.MultiWriter(oldout, os.Stdout)) os.Stderr, err = os.OpenFile(directory+"stderr.log", os.O_WRONLY|os.O_CREATE|os.O_APPEND, os.ModePerm) if err != nil { panic(err) } }