为了账号安全,请及时绑定邮箱和手机立即绑定

log4go的异常行为

log4go的异常行为

Go
RISEBY 2021-05-07 14:23:46
我发现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的文档最近没有维护,示例无法使用,它们使用了不推荐使用的方法,因此一般行为难以理解。


查看完整回答
反对 回复 2021-05-31
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

检查log4go网站上的问题后,似乎log4go出现了冲洗问题。

因为它使用achannel写入文件,如果main退出速度太快,则不会写入日志内容。

因此time.Sleep(time.Second),在代码段末尾添加a将导致刷新日志内容。


查看完整回答
反对 回复 2021-05-31
?
慕码人8056858

TA贡献1803条经验 获得超6个赞

甚至没有提供至少一个指向“ log4go”的链接,要回答这个问题并不容易(因此为-1),所以让我猜测:在某个地方可能缺少对“ flush”的调用。也许可以更好地向软件包作者报告此问题?

顺便说一句:考虑到标准/推荐的Go设置,导入路径“ log4go”也已损坏。


查看完整回答
反对 回复 2021-05-31
  • 3 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信