登录
首页 >  Golang >  Go问答

log.Printf() 为何未输出内容?

来源:stackoverflow

时间:2024-03-07 15:57:26 434浏览 收藏

编程并不是一个机械性的工作,而是需要有思考,有创新的工作,语法是固定的,但解决问题的思路则是依靠人的思维,这就需要我们坚持学习和更新自己的知识。今天golang学习网就整理分享《log.Printf() 为何未输出内容?》,文章讲解的知识点主要包括,如果你对Golang方面的知识点感兴趣,就不要错过golang学习网,在这可以对大家的知识积累有所帮助,助力开发能力的提升。

问题内容

我正在学习 go,遇到了这种我不理解的行为。当我进行错误检查并使用 log.printf() 时,我会看到操作系统错误,如果我在命令行上犯同样的错误,我通常会看到该错误。

但是当我使用 log.fatal() 时,最后一个 log.printf() 不会打印到屏幕上。

package main

import (
    "log"
    "os/exec"
    "fmt"
)

func main() {
    cmd := exec.command("ls", "-2")

    stdoutstderr, err := cmd.combinedoutput()
    if err != nil {
        log.printf("error: %v", err)
        fmt.println("printing log fatal()")
        log.fatal(err)
    }
    fmt.printf("output %s\n", stdoutstderr)

}

我期待看到这个输出:

# go run main.go 
2019/05/14 11:23:34 error: exit status 2
output ls: invalid option -- '2'
try 'ls --help' for more information.
printing log fatal()
2019/05/14 11:24:45 exit status 2
exit status 1

但我的实际结果是:

# go run main.go
2019/05/14 11:24:45 Error: exit status 2
Printing log fata()
2019/05/14 11:24:45 exit status 2
exit status 1

解决方案


log.Fatal 在打印日志消息后调用 os.Exit()。因此 log.Fatal() 之后的语句将不会被调用。我相信这就是您在日志中看不到 fmt.Printf("Output %s\n", stdoutStderr) 输出的原因。

今天关于《log.Printf() 为何未输出内容?》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>