使用命令在本地运行Web应用程序时
go run MainPackageFile.go
我们可以用马提尼地图记录器
m := martini.Classic()
m.Get("/m", func() string {
return "Hello world!"
})
m.Map(log.New(f, "[martini]", log.LstdFlags))
但是,如果代码外出现错误,例如无法下载软件包等...该如何获取运行时日志?在本地运行时,错误将打印到控制台上。在服务器中运行时,有什么办法可以将所有日志写入文本文件?
您可以使用此功能将标准错误重定向到文件。这将收到回溯。
// redirectStderr to the file passed in
func redirectStderr(f *os.File) {
err := syscall.Dup2(int(f.Fd()), int(os.Stderr.Fd()))
if err != nil {
log.Fatalf("Failed to redirect stderr to file: %v", err)
}
}
它仅适用于linux / mac / unix。
这是对Windows执行相同操作的方法
var (
kernel32 = syscall.MustLoadDLL("kernel32.dll")
procSetStdHandle = kernel32.MustFindProc("SetStdHandle")
)
func setStdHandle(stdhandle int32, handle syscall.Handle) error {
r0, _, e1 := syscall.Syscall(procSetStdHandle.Addr(), 2, uintptr(stdhandle), uintptr(handle), 0)
if r0 == 0 {
if e1 != 0 {
return error(e1)
}
return syscall.EINVAL
}
return nil
}
// redirectStderr to the file passed in
func redirectStderr(f *os.File) {
err := setStdHandle(syscall.STD_ERROR_HANDLE, syscall.Handle(f.Fd()))
if err != nil {
log.Fatalf("Failed to redirect stderr to file: %v", err)
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句