我们可以将所有控制台日志定向到文件吗?

乔乔:

使用命令在本地运行Web应用程序时

go run MainPackageFile.go

我们可以用马提尼地图记录器

m := martini.Classic()
m.Get("/m", func() string {
  return "Hello world!"
})
m.Map(log.New(f, "[martini]", log.LstdFlags))

但是,如果代码外出现错误,例如无法下载软件包等...该如何获取运行时日志?在本地运行时,错误将打印到控制台上。在服务器中运行时,有什么办法可以将所有日志写入文本文件?

尼克·克雷格·伍德(Nick Craig-Wood):

您可以使用此功能将标准错误重定向到文件。这将收到回溯。

// 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)
    }
}

Minux的原始代码

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

我们可以从控制台查看消息吗?

我们可以通过 AWS 控制台设置 AWS ALB 优先级吗?

我们有用于Codeigniter的控制台吗

我可以将日志文件重定向到syslog吗?

如何将javaw.exe控制台输出重定向到日志文件?

如何将NodeJs日志从控制台重定向到文件

需要使用Python将控制台输出重定向到日志文件

如何将telnet控制台日志重定向到文件linux

将后台作业的stdout / stderr从控制台重定向到日志文件?

robocopy可以显示控制台并创建日志文件吗?

如何将Django控制台的所有日志写入自定义文件文件?

我们可以使用Symfony \ Bundle \ FrameworkBundle \ Test \ WebTestCase进行symfony 2控制台命令测试吗?

我们可以互换控制台和Win32 C ++的命令和功能吗?

Eclipse-将所有记录器输出重定向到控制台

无法将控制台输出重定向到文件

在实时输出时,如何将命令的stdout和stderr重定向到控制台和日志文件?

我们可以将ManagedObject绑定到View吗?

将Python集成到Java中-我们可以直接调用.py文件吗?

我们可以将所有数据类型合二为一吗?

我们有ACL的日志吗?

自定义控制台键盘映射 - 无法打开包含文件我们

我们如何将选定的注释打印到控制台?

将脚本输出重定向到控制台和日志

我可以同时将输出重定向到日志文件和后台进程吗?

我们可以将哈希表写入文件吗?

如何使用正确的编码将所有控制台输出重定向到Swing JTextArea / JTextPane?

我可以在 azure 中查看我的 Web 应用程序的控制台日志吗?

我们可以减少现有文件的大小吗?

我们可以在启用了Google Cloud消息传递的情况下自动创建google api控制台项目吗?