go - Golang 中的记录器功能失败

标签 go

我有一个应该是非常简单的记录器功能,但是在创建日志文件时,没有写入任何内容。我尝试了几种不同的方法,但它仍然失败。函数是

func logger(logname string, message string) {
    logName := "../planner/log/" + logname + ".log"
    var file *os.File

    file, err := os.OpenFile(logName, os.O_APPEND|os.O_CREATE, 0755)
    if err != nil {
        fmt.Println("File", logName, "failed with error:", err)
    }

    //file.WriteString(message)
    fmt.Fprintf(file, message)
    fmt.Println("Wrote", message, "to", logName)
    file.Sync()
    file.Close()

    test, err := os.Stat(logName)
    size := test.Size()
    fmt.Println("File size is", size)
}

最佳答案

您没有在文件中获取任何内容,因为您没有使用 os.WRONLYos.RDWR 打开它。默认。 os.OpenFile 返回一个只有读权限的缓冲区。您可能希望使用 defer 关闭文件,以防代码因 defer file.Close() 出现困惑。

关于go - Golang 中的记录器功能失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51457902/

相关文章:

Golang http get 请求在某些但不是所有 url 上中断

go - 展开包导入路径

xml - 在 Go 中使用交替内容类型解码 XML 元素

go - 在 Go 中生成私钥时使用什么类型的阅读器?

function - Go 的 struct 方法在调用中抛出太多参数

go - 如何检查结构中是否设置了属性

go - 在 Go 中测试通过 json http 响应返回的错误

string - string(int),string(int32)和string([] int32)均有效,但string([] int)无效-这里的原理是什么?

go - golang执行 'docker run..'异常退出

go - 解码 LinkedIn 电子邮件