log4go的异常行为

我发现log4go软件包会不时丢失日志。


以下是一个简单的代码片段(我移动了log4go目录,因此下面的导入是可以的。):


package main

import (

    "log4go"

    "log"

    "fmt"

)


func main() {

    fmt.Println("fmt")

    log.Println("log")

    log4go.Info("log4go")

    log4go.Info("log4go")

}

然后由执行go run test.go,输出如下:


fmt

2013/01/10 15:24:04 log

消息bylog4go不会写入输出。


为什么?


RISEBY
浏览 192回答 3
3回答

翻翻过去那场雪

编辑:似乎他们的入门页面不再是最新的,实际上我在将log4go打印到stdout时遇到了问题,在3.0.1版的文档中,他们指出:使用注意事项:-ConsoleLogWriter不会将消息的源显示到标准输出,但是FileLogWriter会显示。那在我的盒子上是无法再现的。将其打印到stdout的唯一方法是在记录调用后通过调用os.Stdout.Sync()手动刷新(如@jnml建议)。通常,我的印象是log4go的文档最近没有维护,示例无法使用,它们使用了不推荐使用的方法,因此一般行为难以理解。

潇潇雨雨

检查log4go网站上的问题后,似乎log4go出现了冲洗问题。因为它使用achannel写入文件,如果main退出速度太快,则不会写入日志内容。因此time.Sleep(time.Second),在代码段末尾添加a将导致刷新日志内容。

慕码人8056858

甚至没有提供至少一个指向“ log4go”的链接,要回答这个问题并不容易(因此为-1),所以让我猜测:在某个地方可能缺少对“ flush”的调用。也许可以更好地向软件包作者报告此问题?顺便说一句:考虑到标准/推荐的Go设置,导入路径“ log4go”也已损坏。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go