我发现log4go软件包会不时丢失日志。以下是一个简单的代码片段(我移动了log4go目录,因此下面的导入是可以的。):package mainimport ( "log4go" "log" "fmt")func main() { fmt.Println("fmt") log.Println("log") log4go.Info("log4go") log4go.Info("log4go")}然后由执行go run test.go,输出如下:fmt2013/01/10 15:24:04 log消息bylog4go不会写入输出。为什么?
3 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
编辑:似乎他们的入门页面不再是最新的,实际上我在将log4go打印到stdout时遇到了问题,在3.0.1版的文档中,他们指出:
使用注意事项:-ConsoleLogWriter不会将消息的源显示到标准输出,但是FileLogWriter会显示。
那在我的盒子上是无法再现的。将其打印到stdout的唯一方法是在记录调用后通过调用os.Stdout.Sync()手动刷新(如@jnml建议)。
通常,我的印象是log4go的文档最近没有维护,示例无法使用,它们使用了不推荐使用的方法,因此一般行为难以理解。
潇潇雨雨
TA贡献1833条经验 获得超4个赞
检查log4go
网站上的问题后,似乎log4go
出现了冲洗问题。
因为它使用achannel
写入文件,如果main
退出速度太快,则不会写入日志内容。
因此time.Sleep(time.Second)
,在代码段末尾添加a将导致刷新日志内容。
慕码人8056858
TA贡献1803条经验 获得超6个赞
甚至没有提供至少一个指向“ log4go”的链接,要回答这个问题并不容易(因此为-1),所以让我猜测:在某个地方可能缺少对“ flush”的调用。也许可以更好地向软件包作者报告此问题?
顺便说一句:考虑到标准/推荐的Go设置,导入路径“ log4go”也已损坏。
- 3 回答
- 0 关注
- 191 浏览
添加回答
举报
0/150
提交
取消